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

◆ EmitTypeBinaryExpression()

void System.Linq.Expressions.Compiler.LambdaCompiler.EmitTypeBinaryExpression ( Expression expr)
inlineprivate

Definition at line 1541 of file LambdaCompiler.cs.

1542 {
1543 TypeBinaryExpression typeBinaryExpression = (TypeBinaryExpression)expr;
1544 if (typeBinaryExpression.NodeType == ExpressionType.TypeEqual)
1545 {
1546 EmitExpression(typeBinaryExpression.ReduceTypeEqual());
1547 return;
1548 }
1549 Type type = typeBinaryExpression.Expression.Type;
1550 AnalyzeTypeIsResult analyzeTypeIsResult = ConstantCheck.AnalyzeTypeIs(typeBinaryExpression);
1551 switch (analyzeTypeIsResult)
1552 {
1553 case AnalyzeTypeIsResult.KnownFalse:
1554 case AnalyzeTypeIsResult.KnownTrue:
1556 _ilg.EmitPrimitive(analyzeTypeIsResult == AnalyzeTypeIsResult.KnownTrue);
1557 return;
1558 case AnalyzeTypeIsResult.KnownAssignable:
1559 if (type.IsNullableType())
1560 {
1562 _ilg.EmitHasValue(type);
1563 }
1564 else
1565 {
1569 }
1570 return;
1571 }
1573 if (type.IsValueType)
1574 {
1576 }
1580 }
void EmitAddress(Expression node, Type type)
virtual void Emit(OpCode opcode)
static readonly OpCode Isinst
Definition OpCodes.cs:237
static readonly OpCode Ldnull
Definition OpCodes.cs:45
static readonly OpCode Box
Definition OpCodes.cs:279
static readonly OpCode Cgt_Un
Definition OpCodes.cs:409

References System.Linq.Expressions.Compiler.LambdaCompiler._ilg, System.Linq.Expressions.ConstantCheck.AnalyzeTypeIs(), System.Reflection.Emit.OpCodes.Box, System.Reflection.Emit.OpCodes.Cgt_Un, System.Reflection.Emit.ILGenerator.Emit(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitAddress(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpressionAsVoid(), System.Reflection.Emit.OpCodes.Isinst, System.Reflection.Emit.OpCodes.Ldnull, and System.type.

Referenced by System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpression().