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

◆ AddReturnLabel()

void System.Linq.Expressions.Compiler.LambdaCompiler.AddReturnLabel ( LambdaExpression lambda)
inlineprivate

Definition at line 981 of file LambdaCompiler.cs.

982 {
984 while (true)
985 {
986 switch (expression.NodeType)
987 {
988 default:
989 return;
990 case ExpressionType.Label:
991 {
992 LabelTarget target = ((LabelExpression)expression).Target;
993 _labelInfo.Add(target, new LabelInfo(_ilg, target, TypeUtils.AreReferenceAssignable(lambda.ReturnType, target.Type)));
994 return;
995 }
996 case ExpressionType.Block:
997 {
998 BlockExpression blockExpression = (BlockExpression)expression;
999 if (blockExpression.ExpressionCount == 0)
1000 {
1001 return;
1002 }
1003 for (int num = blockExpression.ExpressionCount - 1; num >= 0; num--)
1004 {
1005 expression = blockExpression.GetExpression(num);
1007 {
1008 break;
1009 }
1010 }
1011 break;
1012 }
1013 }
1014 }
1015 }
void Add(TKey key, TValue value)
static bool AreReferenceAssignable(Type dest, Type src)
Definition TypeUtils.cs:673
readonly Dictionary< LabelTarget, LabelInfo > _labelInfo

References System.Linq.Expressions.Compiler.LambdaCompiler._ilg, System.Linq.Expressions.Compiler.LambdaCompiler._labelInfo, System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Dynamic.Utils.TypeUtils.AreReferenceAssignable(), System.Linq.Expressions.Compiler.LambdaCompiler.Significant(), and System.Linq.Expressions.LabelTarget.Type.

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