Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
MemberInitExpression.cs
Go to the documentation of this file.
5
7
8[DebuggerTypeProxy(typeof(MemberInitExpressionProxy))]
9public sealed class MemberInitExpression : Expression
10{
11 public sealed override Type Type => NewExpression.Type;
12
13 public override bool CanReduce => true;
14
15 public sealed override ExpressionType NodeType => ExpressionType.MemberInit;
16
18
20
26
27 protected internal override Expression Accept(ExpressionVisitor visitor)
28 {
29 return visitor.VisitMemberInit(this);
30 }
31
32 public override Expression Reduce()
33 {
35 }
36
50
65
67 {
69 return binding.BindingType switch
70 {
71 MemberBindingType.Assignment => Expression.Assign(memberExpression, ((MemberAssignment)binding).Expression),
72 MemberBindingType.ListBinding => ReduceListInit(memberExpression, ((MemberListBinding)binding).Initializers, keepOnStack: false),
74 _ => throw ContractUtils.Unreachable,
75 };
76 }
77
79 {
80 if (newExpression == NewExpression && bindings != null && ExpressionUtils.SameElements(ref bindings, Bindings))
81 {
82 return this;
83 }
84 return Expression.MemberInit(newExpression, bindings);
85 }
86}
static BlockExpression Block(Expression arg0, Expression arg1)
static MethodCallExpression Call(MethodInfo method)
static BinaryExpression Assign(Expression left, Expression right)
static MemberExpression MakeMemberAccess(Expression? expression, MemberInfo member)
static MemberInitExpression MemberInit(NewExpression newExpression, params MemberBinding[] bindings)
static ParameterExpression Variable(Type type)
MemberInitExpression(NewExpression newExpression, ReadOnlyCollection< MemberBinding > bindings)
ReadOnlyCollection< MemberBinding > Bindings
override Expression Accept(ExpressionVisitor visitor)
static Expression ReduceMemberBinding(ParameterExpression objVar, MemberBinding binding)
static Expression ReduceMemberInit(Expression objExpression, ReadOnlyCollection< MemberBinding > bindings, bool keepOnStack)
static Expression ReduceListInit(Expression listExpression, ReadOnlyCollection< ElementInit > initializers, bool keepOnStack)
MemberInitExpression Update(NewExpression newExpression, IEnumerable< MemberBinding > bindings)
static readonly DefaultExpression Empty
Definition Utils.cs:60