Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ EmitExpression() [2/2]

void System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpression ( Expression node,
CompilationFlags flags )
inlineprivate

Definition at line 2098 of file LambdaCompiler.cs.

2099 {
2101 {
2102 _guard.RunOnEmptyStack(delegate(LambdaCompiler @this, Expression n, CompilationFlags f)
2103 {
2104 @this.EmitExpression(n, f);
2105 }, this, node, flags);
2106 return;
2107 }
2108 bool flag = (flags & CompilationFlags.EmitExpressionStartMask) == CompilationFlags.EmitExpressionStart;
2110 flags &= CompilationFlags.EmitAsTailCallMask;
2111 switch (node.NodeType)
2112 {
2113 case ExpressionType.Add:
2114 case ExpressionType.AddChecked:
2115 case ExpressionType.And:
2116 case ExpressionType.ArrayIndex:
2117 case ExpressionType.Divide:
2118 case ExpressionType.Equal:
2119 case ExpressionType.ExclusiveOr:
2120 case ExpressionType.GreaterThan:
2121 case ExpressionType.GreaterThanOrEqual:
2122 case ExpressionType.LeftShift:
2123 case ExpressionType.LessThan:
2124 case ExpressionType.LessThanOrEqual:
2125 case ExpressionType.Modulo:
2126 case ExpressionType.Multiply:
2127 case ExpressionType.MultiplyChecked:
2128 case ExpressionType.NotEqual:
2129 case ExpressionType.Or:
2130 case ExpressionType.Power:
2131 case ExpressionType.RightShift:
2132 case ExpressionType.Subtract:
2133 case ExpressionType.SubtractChecked:
2134 EmitBinaryExpression(node, flags);
2135 break;
2136 case ExpressionType.AndAlso:
2138 break;
2139 case ExpressionType.OrElse:
2141 break;
2142 case ExpressionType.Coalesce:
2144 break;
2145 case ExpressionType.Assign:
2147 break;
2148 case ExpressionType.ArrayLength:
2149 case ExpressionType.Negate:
2150 case ExpressionType.UnaryPlus:
2151 case ExpressionType.NegateChecked:
2152 case ExpressionType.Not:
2153 case ExpressionType.TypeAs:
2154 case ExpressionType.Decrement:
2155 case ExpressionType.Increment:
2156 case ExpressionType.OnesComplement:
2157 case ExpressionType.IsTrue:
2158 case ExpressionType.IsFalse:
2159 EmitUnaryExpression(node, flags);
2160 break;
2161 case ExpressionType.Convert:
2162 case ExpressionType.ConvertChecked:
2164 break;
2165 case ExpressionType.Quote:
2167 break;
2168 case ExpressionType.Throw:
2170 break;
2171 case ExpressionType.Unbox:
2173 break;
2174 case ExpressionType.Call:
2176 break;
2177 case ExpressionType.Conditional:
2179 break;
2180 case ExpressionType.Constant:
2182 break;
2183 case ExpressionType.Invoke:
2185 break;
2186 case ExpressionType.Lambda:
2188 break;
2189 case ExpressionType.ListInit:
2191 break;
2192 case ExpressionType.MemberAccess:
2194 break;
2195 case ExpressionType.MemberInit:
2197 break;
2198 case ExpressionType.New:
2200 break;
2201 case ExpressionType.NewArrayInit:
2202 case ExpressionType.NewArrayBounds:
2204 break;
2205 case ExpressionType.Parameter:
2207 break;
2208 case ExpressionType.TypeIs:
2209 case ExpressionType.TypeEqual:
2211 break;
2212 case ExpressionType.Block:
2213 EmitBlockExpression(node, flags);
2214 break;
2215 case ExpressionType.DebugInfo:
2217 break;
2218 case ExpressionType.Dynamic:
2220 break;
2221 case ExpressionType.Default:
2223 break;
2224 case ExpressionType.Goto:
2225 EmitGotoExpression(node, flags);
2226 break;
2227 case ExpressionType.Index:
2229 break;
2230 case ExpressionType.Label:
2231 EmitLabelExpression(node, flags);
2232 break;
2233 case ExpressionType.RuntimeVariables:
2235 break;
2236 case ExpressionType.Loop:
2238 break;
2239 case ExpressionType.Switch:
2240 EmitSwitchExpression(node, flags);
2241 break;
2242 case ExpressionType.Try:
2244 break;
2245 }
2246 if (flag)
2247 {
2249 }
2250 }
void Add(TKey key, TValue value)
void EmitConvertUnaryExpression(Expression expr, CompilationFlags flags)
void EmitBlockExpression(Expression expr, CompilationFlags flags)
void EmitAndAlsoBinaryExpression(Expression expr, CompilationFlags flags)
void EmitUnaryExpression(Expression expr, CompilationFlags flags)
void EmitMethodCallExpression(Expression expr, CompilationFlags flags)
void EmitSwitchExpression(Expression expr, CompilationFlags flags)
void EmitOrElseBinaryExpression(Expression expr, CompilationFlags flags)
void EmitInvocationExpression(Expression expr, CompilationFlags flags)
void EmitConditionalExpression(Expression expr, CompilationFlags flags)
void EmitLabelExpression(Expression expr, CompilationFlags flags)
void EmitGotoExpression(Expression expr, CompilationFlags flags)
LambdaCompiler(AnalyzedTree tree, LambdaExpression lambda)

References System.Linq.Expressions.Compiler.LambdaCompiler._guard, System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitAndAlsoBinaryExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitAssignBinaryExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitBinaryExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitBlockExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitCoalesceBinaryExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitConditionalExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitConstantExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitConvertUnaryExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitDebugInfoExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitDefaultExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitDynamicExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpressionEnd(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpressionStart, System.Linq.Expressions.Compiler.LambdaCompiler.EmitGotoExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitIndexExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitInvocationExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitLabelExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitLambdaExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitListInitExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitLoopExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitMemberExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitMemberInitExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitMethodCallExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitNewArrayExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitNewExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitOrElseBinaryExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitParameterExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitQuoteUnaryExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitRuntimeVariablesExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitSwitchExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitThrowUnaryExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitTryExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitTypeBinaryExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitUnaryExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitUnboxUnaryExpression(), and System.Linq.Expressions.StackGuard.TryEnterOnCurrentStack().