Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ ReduceMember()

Expression System.Linq.Expressions.UnaryExpression.ReduceMember ( )
inlineprivate

Definition at line 125 of file UnaryExpression.cs.

126 {
127 MemberExpression memberExpression = (MemberExpression)Operand;
128 if (memberExpression.Expression == null)
129 {
130 return ReduceVariable();
131 }
132 ParameterExpression parameterExpression = Expression.Parameter(memberExpression.Expression.Type, null);
133 BinaryExpression binaryExpression = Expression.Assign(parameterExpression, memberExpression.Expression);
134 memberExpression = Expression.MakeMemberAccess(parameterExpression, memberExpression.Member);
135 if (IsPrefix)
136 {
137 return Expression.Block(new TrueReadOnlyCollection<ParameterExpression>(parameterExpression), new TrueReadOnlyCollection<Expression>(binaryExpression, Expression.Assign(memberExpression, FunctionalOp(memberExpression))));
138 }
139 ParameterExpression parameterExpression2 = Expression.Parameter(memberExpression.Type, null);
140 return Expression.Block(new TrueReadOnlyCollection<ParameterExpression>(parameterExpression, parameterExpression2), new TrueReadOnlyCollection<Expression>(binaryExpression, Expression.Assign(parameterExpression2, memberExpression), Expression.Assign(memberExpression, FunctionalOp(parameterExpression2)), parameterExpression2));
141 }
UnaryExpression FunctionalOp(Expression operand)

References System.Linq.Expressions.Expression< TDelegate >.Assign(), System.Linq.Expressions.Expression< TDelegate >.Block(), System.Linq.Expressions.MemberExpression.Expression, System.Linq.Expressions.UnaryExpression.FunctionalOp(), System.Linq.Expressions.UnaryExpression.IsPrefix, System.Linq.Expressions.Expression< TDelegate >.MakeMemberAccess(), System.Linq.Expressions.MemberExpression.Member, System.Linq.Expressions.UnaryExpression.Operand, System.Linq.Expressions.Expression< TDelegate >.Parameter(), System.Linq.Expressions.UnaryExpression.ReduceVariable(), and System.Linq.Expressions.Expression< TDelegate >.Type.

Referenced by System.Linq.Expressions.UnaryExpression.Reduce().