Browse Source

Fix handling of operators in Roslyn

pull/988/head
Siegfried Pammer 8 years ago
parent
commit
372e9e1a97
  1. 10
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.cs
  2. 504
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.il
  3. 516
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.opt.il
  4. 511
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.opt.roslyn.il
  5. 517
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.roslyn.il
  6. 28
      ICSharpCode.Decompiler/IL/Transforms/TransformExpressionTrees.cs

10
ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.cs

@ -316,10 +316,18 @@ public class ExpressionTrees @@ -316,10 +316,18 @@ public class ExpressionTrees
{
return a("42");
}
private bool Fizz(Func<Action, bool> a)
{
return a(null);
}
public void NestedLambda2()
{
ExpressionTrees.ToCode(ExpressionTrees.X(), () => this.Fizz((string x) => x == "a"));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => this.Fizz((string x) => x != "a"));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => this.Fizz((Action x) => x == new Action(this.NestedLambda2)));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => this.Fizz((Action x) => x != new Action(this.NestedLambda2)));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => this.Fizz((int x) => x == 37));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => this.Fizz((int x) => true));

504
ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.il

@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly '05r5is52'
.assembly gj2fd1ss
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
.custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
@ -30,15 +30,15 @@ @@ -30,15 +30,15 @@
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module '05r5is52.dll'
// MVID: {F70BBCF1-4F46-4420-BD20-CAE864CFD4A5}
.module gj2fd1ss.dll
// MVID: {611E022F-FB4E-4130-A180-D0169E711557}
.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
.imagebase 0x10000000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x00F10000
// Image base: 0x03390000
// =============== CLASS MEMBERS DECLARATION ===================
@ -3164,14 +3164,32 @@ @@ -3164,14 +3164,32 @@
IL_0010: ret
} // end of method ExpressionTrees::Fizz
.method private hidebysig instance bool
Fizz(class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool> a) cil managed
{
// Code size 13 (0xd)
.maxstack 2
.locals init (bool V_0)
IL_0000: nop
IL_0001: ldarg.1
IL_0002: ldnull
IL_0003: callvirt instance !1 class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>::Invoke(!0)
IL_0008: stloc.0
IL_0009: br.s IL_000b
IL_000b: ldloc.0
IL_000c: ret
} // end of method ExpressionTrees::Fizz
.method public hidebysig instance void
NestedLambda2() cil managed
{
// Code size 562 (0x232)
.maxstack 9
// Code size 1254 (0x4e6)
.maxstack 12
.locals init (class [System.Core]System.Linq.Expressions.Expression[] V_0,
class [System.Core]System.Linq.Expressions.ParameterExpression V_1,
class [System.Core]System.Linq.Expressions.ParameterExpression[] V_2)
class [System.Core]System.Linq.Expressions.ParameterExpression[] V_2,
class [System.Core]System.Linq.Expressions.Expression[] V_3)
IL_0000: nop
IL_0001: call object ExpressionTrees::X()
IL_0006: ldarg.0
@ -3238,7 +3256,7 @@ @@ -3238,7 +3256,7 @@
IL_00ab: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00b0: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00b5: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_00b5: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<string,bool>)
IL_00ba: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00bf: castclass [mscorlib]System.Reflection.MethodInfo
IL_00c4: ldc.i4.1
@ -3246,142 +3264,390 @@ @@ -3246,142 +3264,390 @@
IL_00ca: stloc.0
IL_00cb: ldloc.0
IL_00cc: ldc.i4.0
IL_00cd: ldtoken [mscorlib]System.Int32
IL_00cd: ldtoken [mscorlib]System.String
IL_00d2: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00d7: ldstr "x"
IL_00dc: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_00e1: stloc.1
IL_00e2: ldloc.1
IL_00e3: ldc.i4.s 37
IL_00e5: box [mscorlib]System.Int32
IL_00ea: ldtoken [mscorlib]System.Int32
IL_00ef: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f4: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
IL_00e3: ldstr "a"
IL_00e8: ldtoken [mscorlib]System.String
IL_00ed: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f2: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00f7: ldc.i4.0
IL_00f8: ldtoken method bool [mscorlib]System.String::op_Inequality(string,
string)
IL_00fd: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0102: castclass [mscorlib]System.Reflection.MethodInfo
IL_0107: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::NotEqual(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression,
bool,
class [mscorlib]System.Reflection.MethodInfo)
IL_010c: ldc.i4.1
IL_010d: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0112: stloc.2
IL_0113: ldloc.2
IL_0114: ldc.i4.0
IL_0115: ldloc.1
IL_0116: stelem.ref
IL_0117: ldloc.2
IL_0118: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<string,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_011d: stelem.ref
IL_011e: ldloc.0
IL_011f: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_0124: ldc.i4.0
IL_0125: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_012a: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_012f: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0134: pop
IL_0135: call object ExpressionTrees::X()
IL_013a: ldarg.0
IL_013b: box ExpressionTrees
IL_0140: ldtoken ExpressionTrees
IL_0145: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_014a: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_014f: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>)
IL_0154: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0159: castclass [mscorlib]System.Reflection.MethodInfo
IL_015e: ldc.i4.1
IL_015f: newarr [System.Core]System.Linq.Expressions.Expression
IL_0164: stloc.0
IL_0165: ldloc.0
IL_0166: ldc.i4.0
IL_0167: ldtoken [mscorlib]System.Action
IL_016c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0171: ldstr "x"
IL_0176: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_017b: stloc.1
IL_017c: ldloc.1
IL_017d: ldtoken method instance void ExpressionTrees::NestedLambda2()
IL_0182: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0187: castclass [mscorlib]System.Reflection.MethodInfo
IL_018c: box [mscorlib]System.Reflection.MethodInfo
IL_0191: ldtoken [mscorlib]System.Reflection.MethodInfo
IL_0196: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_019b: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_01a0: ldtoken method instance class [mscorlib]System.Delegate [mscorlib]System.Reflection.MethodInfo::CreateDelegate(class [mscorlib]System.Type,
object)
IL_01a5: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_01aa: castclass [mscorlib]System.Reflection.MethodInfo
IL_01af: ldc.i4.2
IL_01b0: newarr [System.Core]System.Linq.Expressions.Expression
IL_01b5: stloc.3
IL_01b6: ldloc.3
IL_01b7: ldc.i4.0
IL_01b8: ldtoken [mscorlib]System.Action
IL_01bd: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01c2: box [mscorlib]System.Type
IL_01c7: ldtoken [mscorlib]System.Type
IL_01cc: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01d1: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00f9: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Equal(class [System.Core]System.Linq.Expressions.Expression,
IL_01d6: stelem.ref
IL_01d7: ldloc.3
IL_01d8: ldc.i4.1
IL_01d9: ldarg.0
IL_01da: box ExpressionTrees
IL_01df: ldtoken ExpressionTrees
IL_01e4: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01e9: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_01ee: stelem.ref
IL_01ef: ldloc.3
IL_01f0: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_01f5: ldtoken [mscorlib]System.Action
IL_01fa: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01ff: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Type)
IL_0204: ldc.i4.0
IL_0205: ldtoken method bool [mscorlib]System.Delegate::op_Equality(class [mscorlib]System.Delegate,
class [mscorlib]System.Delegate)
IL_020a: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_020f: castclass [mscorlib]System.Reflection.MethodInfo
IL_0214: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Equal(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression,
bool,
class [mscorlib]System.Reflection.MethodInfo)
IL_0219: ldc.i4.1
IL_021a: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_021f: stloc.2
IL_0220: ldloc.2
IL_0221: ldc.i4.0
IL_0222: ldloc.1
IL_0223: stelem.ref
IL_0224: ldloc.2
IL_0225: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_022a: stelem.ref
IL_022b: ldloc.0
IL_022c: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_0231: ldc.i4.0
IL_0232: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0237: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_023c: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0241: pop
IL_0242: call object ExpressionTrees::X()
IL_0247: ldarg.0
IL_0248: box ExpressionTrees
IL_024d: ldtoken ExpressionTrees
IL_0252: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0257: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_025c: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>)
IL_0261: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0266: castclass [mscorlib]System.Reflection.MethodInfo
IL_026b: ldc.i4.1
IL_026c: newarr [System.Core]System.Linq.Expressions.Expression
IL_0271: stloc.0
IL_0272: ldloc.0
IL_0273: ldc.i4.0
IL_0274: ldtoken [mscorlib]System.Action
IL_0279: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_027e: ldstr "x"
IL_0283: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0288: stloc.1
IL_0289: ldloc.1
IL_028a: ldtoken method instance void ExpressionTrees::NestedLambda2()
IL_028f: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0294: castclass [mscorlib]System.Reflection.MethodInfo
IL_0299: box [mscorlib]System.Reflection.MethodInfo
IL_029e: ldtoken [mscorlib]System.Reflection.MethodInfo
IL_02a3: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_02a8: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_02ad: ldtoken method instance class [mscorlib]System.Delegate [mscorlib]System.Reflection.MethodInfo::CreateDelegate(class [mscorlib]System.Type,
object)
IL_02b2: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_02b7: castclass [mscorlib]System.Reflection.MethodInfo
IL_02bc: ldc.i4.2
IL_02bd: newarr [System.Core]System.Linq.Expressions.Expression
IL_02c2: stloc.3
IL_02c3: ldloc.3
IL_02c4: ldc.i4.0
IL_02c5: ldtoken [mscorlib]System.Action
IL_02ca: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_02cf: box [mscorlib]System.Type
IL_02d4: ldtoken [mscorlib]System.Type
IL_02d9: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_02de: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_02e3: stelem.ref
IL_02e4: ldloc.3
IL_02e5: ldc.i4.1
IL_02e6: ldarg.0
IL_02e7: box ExpressionTrees
IL_02ec: ldtoken ExpressionTrees
IL_02f1: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_02f6: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_02fb: stelem.ref
IL_02fc: ldloc.3
IL_02fd: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_0302: ldtoken [mscorlib]System.Action
IL_0307: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_030c: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Type)
IL_0311: ldc.i4.0
IL_0312: ldtoken method bool [mscorlib]System.Delegate::op_Inequality(class [mscorlib]System.Delegate,
class [mscorlib]System.Delegate)
IL_0317: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_031c: castclass [mscorlib]System.Reflection.MethodInfo
IL_0321: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::NotEqual(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression,
bool,
class [mscorlib]System.Reflection.MethodInfo)
IL_0326: ldc.i4.1
IL_0327: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_032c: stloc.2
IL_032d: ldloc.2
IL_032e: ldc.i4.0
IL_032f: ldloc.1
IL_0330: stelem.ref
IL_0331: ldloc.2
IL_0332: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0337: stelem.ref
IL_0338: ldloc.0
IL_0339: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_033e: ldc.i4.0
IL_033f: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0344: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0349: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_034e: pop
IL_034f: call object ExpressionTrees::X()
IL_0354: ldarg.0
IL_0355: box ExpressionTrees
IL_035a: ldtoken ExpressionTrees
IL_035f: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0364: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0369: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_036e: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0373: castclass [mscorlib]System.Reflection.MethodInfo
IL_0378: ldc.i4.1
IL_0379: newarr [System.Core]System.Linq.Expressions.Expression
IL_037e: stloc.0
IL_037f: ldloc.0
IL_0380: ldc.i4.0
IL_0381: ldtoken [mscorlib]System.Int32
IL_0386: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_038b: ldstr "x"
IL_0390: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0395: stloc.1
IL_0396: ldloc.1
IL_0397: ldc.i4.s 37
IL_0399: box [mscorlib]System.Int32
IL_039e: ldtoken [mscorlib]System.Int32
IL_03a3: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_03a8: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_03ad: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Equal(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression)
IL_00fe: ldc.i4.1
IL_00ff: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0104: stloc.2
IL_0105: ldloc.2
IL_0106: ldc.i4.0
IL_0107: ldloc.1
IL_0108: stelem.ref
IL_0109: ldloc.2
IL_010a: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_03b2: ldc.i4.1
IL_03b3: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_03b8: stloc.2
IL_03b9: ldloc.2
IL_03ba: ldc.i4.0
IL_03bb: ldloc.1
IL_03bc: stelem.ref
IL_03bd: ldloc.2
IL_03be: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_010f: stelem.ref
IL_0110: ldloc.0
IL_0111: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_03c3: stelem.ref
IL_03c4: ldloc.0
IL_03c5: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_0116: ldc.i4.0
IL_0117: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_011c: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_03ca: ldc.i4.0
IL_03cb: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_03d0: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0121: call object ExpressionTrees::ToCode<bool>(object,
IL_03d5: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0126: pop
IL_0127: call object ExpressionTrees::X()
IL_012c: ldarg.0
IL_012d: box ExpressionTrees
IL_0132: ldtoken ExpressionTrees
IL_0137: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_013c: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0141: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_0146: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_014b: castclass [mscorlib]System.Reflection.MethodInfo
IL_0150: ldc.i4.1
IL_0151: newarr [System.Core]System.Linq.Expressions.Expression
IL_0156: stloc.0
IL_0157: ldloc.0
IL_0158: ldc.i4.0
IL_0159: ldtoken [mscorlib]System.Int32
IL_015e: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0163: ldstr "x"
IL_0168: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
IL_03da: pop
IL_03db: call object ExpressionTrees::X()
IL_03e0: ldarg.0
IL_03e1: box ExpressionTrees
IL_03e6: ldtoken ExpressionTrees
IL_03eb: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_03f0: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_03f5: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_03fa: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_03ff: castclass [mscorlib]System.Reflection.MethodInfo
IL_0404: ldc.i4.1
IL_0405: newarr [System.Core]System.Linq.Expressions.Expression
IL_040a: stloc.0
IL_040b: ldloc.0
IL_040c: ldc.i4.0
IL_040d: ldtoken [mscorlib]System.Int32
IL_0412: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0417: ldstr "x"
IL_041c: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_016d: stloc.1
IL_016e: ldc.i4.1
IL_016f: box [mscorlib]System.Boolean
IL_0174: ldtoken [mscorlib]System.Boolean
IL_0179: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_017e: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0183: ldc.i4.1
IL_0184: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0189: stloc.2
IL_018a: ldloc.2
IL_018b: ldc.i4.0
IL_018c: ldloc.1
IL_018d: stelem.ref
IL_018e: ldloc.2
IL_018f: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_0421: stloc.1
IL_0422: ldc.i4.1
IL_0423: box [mscorlib]System.Boolean
IL_0428: ldtoken [mscorlib]System.Boolean
IL_042d: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0432: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0437: ldc.i4.1
IL_0438: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_043d: stloc.2
IL_043e: ldloc.2
IL_043f: ldc.i4.0
IL_0440: ldloc.1
IL_0441: stelem.ref
IL_0442: ldloc.2
IL_0443: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0194: stelem.ref
IL_0195: ldloc.0
IL_0196: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_0448: stelem.ref
IL_0449: ldloc.0
IL_044a: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_019b: ldc.i4.0
IL_019c: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_01a1: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_044f: ldc.i4.0
IL_0450: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0455: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_01a6: call object ExpressionTrees::ToCode<bool>(object,
IL_045a: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_01ab: pop
IL_01ac: call object ExpressionTrees::X()
IL_01b1: ldarg.0
IL_01b2: box ExpressionTrees
IL_01b7: ldtoken ExpressionTrees
IL_01bc: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01c1: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_01c6: ldtoken method instance bool ExpressionTrees::Buzz(class [mscorlib]System.Func`2<int32,bool>)
IL_01cb: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_01d0: castclass [mscorlib]System.Reflection.MethodInfo
IL_01d5: ldc.i4.1
IL_01d6: newarr [System.Core]System.Linq.Expressions.Expression
IL_01db: stloc.0
IL_01dc: ldloc.0
IL_01dd: ldc.i4.0
IL_01de: ldtoken [mscorlib]System.Int32
IL_01e3: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01e8: ldstr "x"
IL_01ed: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
IL_045f: pop
IL_0460: call object ExpressionTrees::X()
IL_0465: ldarg.0
IL_0466: box ExpressionTrees
IL_046b: ldtoken ExpressionTrees
IL_0470: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0475: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_047a: ldtoken method instance bool ExpressionTrees::Buzz(class [mscorlib]System.Func`2<int32,bool>)
IL_047f: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0484: castclass [mscorlib]System.Reflection.MethodInfo
IL_0489: ldc.i4.1
IL_048a: newarr [System.Core]System.Linq.Expressions.Expression
IL_048f: stloc.0
IL_0490: ldloc.0
IL_0491: ldc.i4.0
IL_0492: ldtoken [mscorlib]System.Int32
IL_0497: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_049c: ldstr "x"
IL_04a1: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_01f2: stloc.1
IL_01f3: ldc.i4.1
IL_01f4: box [mscorlib]System.Boolean
IL_01f9: ldtoken [mscorlib]System.Boolean
IL_01fe: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0203: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0208: ldc.i4.1
IL_0209: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_020e: stloc.2
IL_020f: ldloc.2
IL_0210: ldc.i4.0
IL_0211: ldloc.1
IL_0212: stelem.ref
IL_0213: ldloc.2
IL_0214: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_04a6: stloc.1
IL_04a7: ldc.i4.1
IL_04a8: box [mscorlib]System.Boolean
IL_04ad: ldtoken [mscorlib]System.Boolean
IL_04b2: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_04b7: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_04bc: ldc.i4.1
IL_04bd: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_04c2: stloc.2
IL_04c3: ldloc.2
IL_04c4: ldc.i4.0
IL_04c5: ldloc.1
IL_04c6: stelem.ref
IL_04c7: ldloc.2
IL_04c8: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0219: stelem.ref
IL_021a: ldloc.0
IL_021b: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_04cd: stelem.ref
IL_04ce: ldloc.0
IL_04cf: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_0220: ldc.i4.0
IL_0221: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0226: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_04d4: ldc.i4.0
IL_04d5: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_04da: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_022b: call object ExpressionTrees::ToCode<bool>(object,
IL_04df: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0230: pop
IL_0231: ret
IL_04e4: pop
IL_04e5: ret
} // end of method ExpressionTrees::NestedLambda2
.method public hidebysig instance void

516
ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.opt.il

@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly mav11ctu
.assembly '0rzgxc1i'
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
.custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
@ -30,15 +30,15 @@ @@ -30,15 +30,15 @@
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module mav11ctu.dll
// MVID: {A57EFB8D-913F-4E31-91C8-80C6D2206F2E}
.module '0rzgxc1i.dll'
// MVID: {F81FAFBD-2291-4778-9F86-AC124E94C7DB}
.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
.imagebase 0x10000000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x03610000
// Image base: 0x02CE0000
// =============== CLASS MEMBERS DECLARATION ===================
@ -3091,11 +3091,22 @@ @@ -3091,11 +3091,22 @@
IL_000b: ret
} // end of method ExpressionTrees::Fizz
.method private hidebysig instance bool
Fizz(class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool> a) cil managed
{
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.1
IL_0001: ldnull
IL_0002: callvirt instance !1 class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>::Invoke(!0)
IL_0007: ret
} // end of method ExpressionTrees::Fizz
.method public hidebysig instance void
NestedLambda2() cil managed
{
// Code size 583 (0x247)
.maxstack 9
// Code size 1310 (0x51e)
.maxstack 12
.locals init (class [System.Core]System.Linq.Expressions.Expression[] V_0,
class [System.Core]System.Linq.Expressions.ParameterExpression V_1,
class [System.Core]System.Linq.Expressions.ParameterExpression[] V_2,
@ -3104,10 +3115,21 @@ @@ -3104,10 +3115,21 @@
class [System.Core]System.Linq.Expressions.ParameterExpression[] V_5,
class [System.Core]System.Linq.Expressions.Expression[] V_6,
class [System.Core]System.Linq.Expressions.ParameterExpression V_7,
class [System.Core]System.Linq.Expressions.ParameterExpression[] V_8,
class [System.Core]System.Linq.Expressions.Expression[] V_9,
class [System.Core]System.Linq.Expressions.ParameterExpression V_10,
class [System.Core]System.Linq.Expressions.ParameterExpression[] V_11)
class [System.Core]System.Linq.Expressions.Expression[] V_8,
class [System.Core]System.Linq.Expressions.ParameterExpression[] V_9,
class [System.Core]System.Linq.Expressions.Expression[] V_10,
class [System.Core]System.Linq.Expressions.ParameterExpression V_11,
class [System.Core]System.Linq.Expressions.Expression[] V_12,
class [System.Core]System.Linq.Expressions.ParameterExpression[] V_13,
class [System.Core]System.Linq.Expressions.Expression[] V_14,
class [System.Core]System.Linq.Expressions.ParameterExpression V_15,
class [System.Core]System.Linq.Expressions.ParameterExpression[] V_16,
class [System.Core]System.Linq.Expressions.Expression[] V_17,
class [System.Core]System.Linq.Expressions.ParameterExpression V_18,
class [System.Core]System.Linq.Expressions.ParameterExpression[] V_19,
class [System.Core]System.Linq.Expressions.Expression[] V_20,
class [System.Core]System.Linq.Expressions.ParameterExpression V_21,
class [System.Core]System.Linq.Expressions.ParameterExpression[] V_22)
IL_0000: call object ExpressionTrees::X()
IL_0005: ldarg.0
IL_0006: box ExpressionTrees
@ -3173,7 +3195,7 @@ @@ -3173,7 +3195,7 @@
IL_00aa: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00af: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00b4: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_00b4: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<string,bool>)
IL_00b9: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00be: castclass [mscorlib]System.Reflection.MethodInfo
IL_00c3: ldc.i4.1
@ -3181,142 +3203,390 @@ @@ -3181,142 +3203,390 @@
IL_00c9: stloc.3
IL_00ca: ldloc.3
IL_00cb: ldc.i4.0
IL_00cc: ldtoken [mscorlib]System.Int32
IL_00cc: ldtoken [mscorlib]System.String
IL_00d1: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00d6: ldstr "x"
IL_00db: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_00e0: stloc.s V_4
IL_00e2: ldloc.s V_4
IL_00e4: ldc.i4.s 37
IL_00e6: box [mscorlib]System.Int32
IL_00eb: ldtoken [mscorlib]System.Int32
IL_00f0: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f5: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00fa: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Equal(class [System.Core]System.Linq.Expressions.Expression,
IL_00e4: ldstr "a"
IL_00e9: ldtoken [mscorlib]System.String
IL_00ee: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f3: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00f8: ldc.i4.0
IL_00f9: ldtoken method bool [mscorlib]System.String::op_Inequality(string,
string)
IL_00fe: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0103: castclass [mscorlib]System.Reflection.MethodInfo
IL_0108: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::NotEqual(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression,
bool,
class [mscorlib]System.Reflection.MethodInfo)
IL_010d: ldc.i4.1
IL_010e: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0113: stloc.s V_5
IL_0115: ldloc.s V_5
IL_0117: ldc.i4.0
IL_0118: ldloc.s V_4
IL_011a: stelem.ref
IL_011b: ldloc.s V_5
IL_011d: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<string,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0122: stelem.ref
IL_0123: ldloc.3
IL_0124: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_0129: ldc.i4.0
IL_012a: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_012f: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0134: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0139: pop
IL_013a: call object ExpressionTrees::X()
IL_013f: ldarg.0
IL_0140: box ExpressionTrees
IL_0145: ldtoken ExpressionTrees
IL_014a: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_014f: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0154: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>)
IL_0159: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_015e: castclass [mscorlib]System.Reflection.MethodInfo
IL_0163: ldc.i4.1
IL_0164: newarr [System.Core]System.Linq.Expressions.Expression
IL_0169: stloc.s V_6
IL_016b: ldloc.s V_6
IL_016d: ldc.i4.0
IL_016e: ldtoken [mscorlib]System.Action
IL_0173: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0178: ldstr "x"
IL_017d: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0182: stloc.s V_7
IL_0184: ldloc.s V_7
IL_0186: ldtoken method instance void ExpressionTrees::NestedLambda2()
IL_018b: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0190: castclass [mscorlib]System.Reflection.MethodInfo
IL_0195: box [mscorlib]System.Reflection.MethodInfo
IL_019a: ldtoken [mscorlib]System.Reflection.MethodInfo
IL_019f: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01a4: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_01a9: ldtoken method instance class [mscorlib]System.Delegate [mscorlib]System.Reflection.MethodInfo::CreateDelegate(class [mscorlib]System.Type,
object)
IL_01ae: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_01b3: castclass [mscorlib]System.Reflection.MethodInfo
IL_01b8: ldc.i4.2
IL_01b9: newarr [System.Core]System.Linq.Expressions.Expression
IL_01be: stloc.s V_8
IL_01c0: ldloc.s V_8
IL_01c2: ldc.i4.0
IL_01c3: ldtoken [mscorlib]System.Action
IL_01c8: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01cd: box [mscorlib]System.Type
IL_01d2: ldtoken [mscorlib]System.Type
IL_01d7: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01dc: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_01e1: stelem.ref
IL_01e2: ldloc.s V_8
IL_01e4: ldc.i4.1
IL_01e5: ldarg.0
IL_01e6: box ExpressionTrees
IL_01eb: ldtoken ExpressionTrees
IL_01f0: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01f5: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_01fa: stelem.ref
IL_01fb: ldloc.s V_8
IL_01fd: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_0202: ldtoken [mscorlib]System.Action
IL_0207: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_020c: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Type)
IL_0211: ldc.i4.0
IL_0212: ldtoken method bool [mscorlib]System.Delegate::op_Equality(class [mscorlib]System.Delegate,
class [mscorlib]System.Delegate)
IL_0217: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_021c: castclass [mscorlib]System.Reflection.MethodInfo
IL_0221: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Equal(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression,
bool,
class [mscorlib]System.Reflection.MethodInfo)
IL_0226: ldc.i4.1
IL_0227: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_022c: stloc.s V_9
IL_022e: ldloc.s V_9
IL_0230: ldc.i4.0
IL_0231: ldloc.s V_7
IL_0233: stelem.ref
IL_0234: ldloc.s V_9
IL_0236: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_023b: stelem.ref
IL_023c: ldloc.s V_6
IL_023e: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_0243: ldc.i4.0
IL_0244: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0249: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_024e: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0253: pop
IL_0254: call object ExpressionTrees::X()
IL_0259: ldarg.0
IL_025a: box ExpressionTrees
IL_025f: ldtoken ExpressionTrees
IL_0264: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0269: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_026e: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>)
IL_0273: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0278: castclass [mscorlib]System.Reflection.MethodInfo
IL_027d: ldc.i4.1
IL_027e: newarr [System.Core]System.Linq.Expressions.Expression
IL_0283: stloc.s V_10
IL_0285: ldloc.s V_10
IL_0287: ldc.i4.0
IL_0288: ldtoken [mscorlib]System.Action
IL_028d: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0292: ldstr "x"
IL_0297: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_029c: stloc.s V_11
IL_029e: ldloc.s V_11
IL_02a0: ldtoken method instance void ExpressionTrees::NestedLambda2()
IL_02a5: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_02aa: castclass [mscorlib]System.Reflection.MethodInfo
IL_02af: box [mscorlib]System.Reflection.MethodInfo
IL_02b4: ldtoken [mscorlib]System.Reflection.MethodInfo
IL_02b9: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_02be: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_02c3: ldtoken method instance class [mscorlib]System.Delegate [mscorlib]System.Reflection.MethodInfo::CreateDelegate(class [mscorlib]System.Type,
object)
IL_02c8: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_02cd: castclass [mscorlib]System.Reflection.MethodInfo
IL_02d2: ldc.i4.2
IL_02d3: newarr [System.Core]System.Linq.Expressions.Expression
IL_02d8: stloc.s V_12
IL_02da: ldloc.s V_12
IL_02dc: ldc.i4.0
IL_02dd: ldtoken [mscorlib]System.Action
IL_02e2: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_02e7: box [mscorlib]System.Type
IL_02ec: ldtoken [mscorlib]System.Type
IL_02f1: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_02f6: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_02fb: stelem.ref
IL_02fc: ldloc.s V_12
IL_02fe: ldc.i4.1
IL_02ff: ldarg.0
IL_0300: box ExpressionTrees
IL_0305: ldtoken ExpressionTrees
IL_030a: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_030f: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0314: stelem.ref
IL_0315: ldloc.s V_12
IL_0317: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_031c: ldtoken [mscorlib]System.Action
IL_0321: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0326: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Type)
IL_032b: ldc.i4.0
IL_032c: ldtoken method bool [mscorlib]System.Delegate::op_Inequality(class [mscorlib]System.Delegate,
class [mscorlib]System.Delegate)
IL_0331: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0336: castclass [mscorlib]System.Reflection.MethodInfo
IL_033b: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::NotEqual(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression,
bool,
class [mscorlib]System.Reflection.MethodInfo)
IL_0340: ldc.i4.1
IL_0341: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0346: stloc.s V_13
IL_0348: ldloc.s V_13
IL_034a: ldc.i4.0
IL_034b: ldloc.s V_11
IL_034d: stelem.ref
IL_034e: ldloc.s V_13
IL_0350: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0355: stelem.ref
IL_0356: ldloc.s V_10
IL_0358: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_035d: ldc.i4.0
IL_035e: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0363: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0368: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_036d: pop
IL_036e: call object ExpressionTrees::X()
IL_0373: ldarg.0
IL_0374: box ExpressionTrees
IL_0379: ldtoken ExpressionTrees
IL_037e: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0383: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0388: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_038d: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0392: castclass [mscorlib]System.Reflection.MethodInfo
IL_0397: ldc.i4.1
IL_0398: newarr [System.Core]System.Linq.Expressions.Expression
IL_039d: stloc.s V_14
IL_039f: ldloc.s V_14
IL_03a1: ldc.i4.0
IL_03a2: ldtoken [mscorlib]System.Int32
IL_03a7: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_03ac: ldstr "x"
IL_03b1: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_03b6: stloc.s V_15
IL_03b8: ldloc.s V_15
IL_03ba: ldc.i4.s 37
IL_03bc: box [mscorlib]System.Int32
IL_03c1: ldtoken [mscorlib]System.Int32
IL_03c6: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_03cb: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_03d0: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Equal(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression)
IL_00ff: ldc.i4.1
IL_0100: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0105: stloc.s V_5
IL_0107: ldloc.s V_5
IL_0109: ldc.i4.0
IL_010a: ldloc.s V_4
IL_010c: stelem.ref
IL_010d: ldloc.s V_5
IL_010f: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_03d5: ldc.i4.1
IL_03d6: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_03db: stloc.s V_16
IL_03dd: ldloc.s V_16
IL_03df: ldc.i4.0
IL_03e0: ldloc.s V_15
IL_03e2: stelem.ref
IL_03e3: ldloc.s V_16
IL_03e5: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0114: stelem.ref
IL_0115: ldloc.3
IL_0116: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_03ea: stelem.ref
IL_03eb: ldloc.s V_14
IL_03ed: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_011b: ldc.i4.0
IL_011c: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0121: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_03f2: ldc.i4.0
IL_03f3: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_03f8: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0126: call object ExpressionTrees::ToCode<bool>(object,
IL_03fd: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_012b: pop
IL_012c: call object ExpressionTrees::X()
IL_0131: ldarg.0
IL_0132: box ExpressionTrees
IL_0137: ldtoken ExpressionTrees
IL_013c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0141: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0146: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_014b: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0150: castclass [mscorlib]System.Reflection.MethodInfo
IL_0155: ldc.i4.1
IL_0156: newarr [System.Core]System.Linq.Expressions.Expression
IL_015b: stloc.s V_6
IL_015d: ldloc.s V_6
IL_015f: ldc.i4.0
IL_0160: ldtoken [mscorlib]System.Int32
IL_0165: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_016a: ldstr "x"
IL_016f: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
IL_0402: pop
IL_0403: call object ExpressionTrees::X()
IL_0408: ldarg.0
IL_0409: box ExpressionTrees
IL_040e: ldtoken ExpressionTrees
IL_0413: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0418: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_041d: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_0422: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0427: castclass [mscorlib]System.Reflection.MethodInfo
IL_042c: ldc.i4.1
IL_042d: newarr [System.Core]System.Linq.Expressions.Expression
IL_0432: stloc.s V_17
IL_0434: ldloc.s V_17
IL_0436: ldc.i4.0
IL_0437: ldtoken [mscorlib]System.Int32
IL_043c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0441: ldstr "x"
IL_0446: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0174: stloc.s V_7
IL_0176: ldc.i4.1
IL_0177: box [mscorlib]System.Boolean
IL_017c: ldtoken [mscorlib]System.Boolean
IL_0181: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0186: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_018b: ldc.i4.1
IL_018c: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0191: stloc.s V_8
IL_0193: ldloc.s V_8
IL_0195: ldc.i4.0
IL_0196: ldloc.s V_7
IL_0198: stelem.ref
IL_0199: ldloc.s V_8
IL_019b: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_044b: stloc.s V_18
IL_044d: ldc.i4.1
IL_044e: box [mscorlib]System.Boolean
IL_0453: ldtoken [mscorlib]System.Boolean
IL_0458: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_045d: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0462: ldc.i4.1
IL_0463: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0468: stloc.s V_19
IL_046a: ldloc.s V_19
IL_046c: ldc.i4.0
IL_046d: ldloc.s V_18
IL_046f: stelem.ref
IL_0470: ldloc.s V_19
IL_0472: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_01a0: stelem.ref
IL_01a1: ldloc.s V_6
IL_01a3: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_0477: stelem.ref
IL_0478: ldloc.s V_17
IL_047a: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_01a8: ldc.i4.0
IL_01a9: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_01ae: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_047f: ldc.i4.0
IL_0480: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0485: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_01b3: call object ExpressionTrees::ToCode<bool>(object,
IL_048a: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_01b8: pop
IL_01b9: call object ExpressionTrees::X()
IL_01be: ldarg.0
IL_01bf: box ExpressionTrees
IL_01c4: ldtoken ExpressionTrees
IL_01c9: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01ce: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_01d3: ldtoken method instance bool ExpressionTrees::Buzz(class [mscorlib]System.Func`2<int32,bool>)
IL_01d8: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_01dd: castclass [mscorlib]System.Reflection.MethodInfo
IL_01e2: ldc.i4.1
IL_01e3: newarr [System.Core]System.Linq.Expressions.Expression
IL_01e8: stloc.s V_9
IL_01ea: ldloc.s V_9
IL_01ec: ldc.i4.0
IL_01ed: ldtoken [mscorlib]System.Int32
IL_01f2: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01f7: ldstr "x"
IL_01fc: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
IL_048f: pop
IL_0490: call object ExpressionTrees::X()
IL_0495: ldarg.0
IL_0496: box ExpressionTrees
IL_049b: ldtoken ExpressionTrees
IL_04a0: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_04a5: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_04aa: ldtoken method instance bool ExpressionTrees::Buzz(class [mscorlib]System.Func`2<int32,bool>)
IL_04af: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_04b4: castclass [mscorlib]System.Reflection.MethodInfo
IL_04b9: ldc.i4.1
IL_04ba: newarr [System.Core]System.Linq.Expressions.Expression
IL_04bf: stloc.s V_20
IL_04c1: ldloc.s V_20
IL_04c3: ldc.i4.0
IL_04c4: ldtoken [mscorlib]System.Int32
IL_04c9: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_04ce: ldstr "x"
IL_04d3: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0201: stloc.s V_10
IL_0203: ldc.i4.1
IL_0204: box [mscorlib]System.Boolean
IL_0209: ldtoken [mscorlib]System.Boolean
IL_020e: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0213: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0218: ldc.i4.1
IL_0219: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_021e: stloc.s V_11
IL_0220: ldloc.s V_11
IL_0222: ldc.i4.0
IL_0223: ldloc.s V_10
IL_0225: stelem.ref
IL_0226: ldloc.s V_11
IL_0228: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_04d8: stloc.s V_21
IL_04da: ldc.i4.1
IL_04db: box [mscorlib]System.Boolean
IL_04e0: ldtoken [mscorlib]System.Boolean
IL_04e5: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_04ea: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_04ef: ldc.i4.1
IL_04f0: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_04f5: stloc.s V_22
IL_04f7: ldloc.s V_22
IL_04f9: ldc.i4.0
IL_04fa: ldloc.s V_21
IL_04fc: stelem.ref
IL_04fd: ldloc.s V_22
IL_04ff: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_022d: stelem.ref
IL_022e: ldloc.s V_9
IL_0230: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_0504: stelem.ref
IL_0505: ldloc.s V_20
IL_0507: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_0235: ldc.i4.0
IL_0236: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_023b: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_050c: ldc.i4.0
IL_050d: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0512: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0240: call object ExpressionTrees::ToCode<bool>(object,
IL_0517: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0245: pop
IL_0246: ret
IL_051c: pop
IL_051d: ret
} // end of method ExpressionTrees::NestedLambda2
.method public hidebysig instance void

511
ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.opt.roslyn.il

@ -35,14 +35,14 @@ @@ -35,14 +35,14 @@
.ver 0:0:0:0
}
.module ExpressionTrees.dll
// MVID: {D518E89D-9CFD-4B4B-A974-EACAB7B2D1C7}
// MVID: {AA9C673A-BFCE-40E8-B33E-DB3A1434FD39}
.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
.imagebase 0x10000000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x012D0000
// Image base: 0x02C90000
// =============== CLASS MEMBERS DECLARATION ===================
@ -709,7 +709,7 @@ @@ -709,7 +709,7 @@
} // end of class '<>c__DisplayClass34_0'
.class auto ansi sealed nested private beforefieldinit '<>c__DisplayClass43_0'
.class auto ansi sealed nested private beforefieldinit '<>c__DisplayClass44_0'
extends [mscorlib]System.Object
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
@ -724,11 +724,11 @@ @@ -724,11 +724,11 @@
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method '<>c__DisplayClass43_0'::.ctor
} // end of method '<>c__DisplayClass44_0'::.ctor
} // end of class '<>c__DisplayClass43_0'
} // end of class '<>c__DisplayClass44_0'
.class auto ansi sealed nested private beforefieldinit '<>c__DisplayClass44_0'
.class auto ansi sealed nested private beforefieldinit '<>c__DisplayClass45_0'
extends [mscorlib]System.Object
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
@ -741,11 +741,11 @@ @@ -741,11 +741,11 @@
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method '<>c__DisplayClass44_0'::.ctor
} // end of method '<>c__DisplayClass45_0'::.ctor
} // end of class '<>c__DisplayClass44_0'
} // end of class '<>c__DisplayClass45_0'
.class auto ansi sealed nested private beforefieldinit '<>c__DisplayClass54_0'
.class auto ansi sealed nested private beforefieldinit '<>c__DisplayClass55_0'
extends [mscorlib]System.Object
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
@ -759,9 +759,9 @@ @@ -759,9 +759,9 @@
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method '<>c__DisplayClass54_0'::.ctor
} // end of method '<>c__DisplayClass55_0'::.ctor
} // end of class '<>c__DisplayClass54_0'
} // end of class '<>c__DisplayClass55_0'
.field private int32 'field'
.method private hidebysig static object
@ -3348,11 +3348,22 @@ @@ -3348,11 +3348,22 @@
IL_000b: ret
} // end of method ExpressionTrees::Fizz
.method private hidebysig instance bool
Fizz(class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool> a) cil managed
{
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.1
IL_0001: ldnull
IL_0002: callvirt instance !1 class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>::Invoke(!0)
IL_0007: ret
} // end of method ExpressionTrees::Fizz
.method public hidebysig instance void
NestedLambda2() cil managed
{
// Code size 509 (0x1fd)
.maxstack 11
// Code size 1124 (0x464)
.maxstack 14
.locals init (class [System.Core]System.Linq.Expressions.ParameterExpression V_0)
IL_0000: call object ExpressionTrees::X()
IL_0005: ldarg.0
@ -3406,136 +3417,352 @@ @@ -3406,136 +3417,352 @@
IL_008c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0091: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0096: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_0096: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<string,bool>)
IL_009b: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00a0: castclass [mscorlib]System.Reflection.MethodInfo
IL_00a5: ldc.i4.1
IL_00a6: newarr [System.Core]System.Linq.Expressions.Expression
IL_00ab: dup
IL_00ac: ldc.i4.0
IL_00ad: ldtoken [mscorlib]System.Int32
IL_00ad: ldtoken [mscorlib]System.String
IL_00b2: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00b7: ldstr "x"
IL_00bc: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_00c1: stloc.0
IL_00c2: ldloc.0
IL_00c3: ldc.i4.s 37
IL_00c5: box [mscorlib]System.Int32
IL_00ca: ldtoken [mscorlib]System.Int32
IL_00cf: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00d4: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
IL_00c3: ldstr "a"
IL_00c8: ldtoken [mscorlib]System.String
IL_00cd: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00d2: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00d9: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Equal(class [System.Core]System.Linq.Expressions.Expression,
IL_00d7: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::NotEqual(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression)
IL_00dc: ldc.i4.1
IL_00dd: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00e2: dup
IL_00e3: ldc.i4.0
IL_00e4: ldloc.0
IL_00e5: stelem.ref
IL_00e6: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<string,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_00eb: stelem.ref
IL_00ec: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_00f1: ldc.i4.0
IL_00f2: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00f7: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_00fc: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0101: pop
IL_0102: call object ExpressionTrees::X()
IL_0107: ldarg.0
IL_0108: ldtoken ExpressionTrees
IL_010d: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0112: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0117: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>)
IL_011c: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0121: castclass [mscorlib]System.Reflection.MethodInfo
IL_0126: ldc.i4.1
IL_0127: newarr [System.Core]System.Linq.Expressions.Expression
IL_012c: dup
IL_012d: ldc.i4.0
IL_012e: ldtoken [mscorlib]System.Action
IL_0133: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0138: ldstr "x"
IL_013d: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0142: stloc.0
IL_0143: ldloc.0
IL_0144: ldtoken method instance void ExpressionTrees::NestedLambda2()
IL_0149: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_014e: castclass [mscorlib]System.Reflection.MethodInfo
IL_0153: ldtoken [mscorlib]System.Reflection.MethodInfo
IL_0158: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_015d: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0162: ldtoken method instance class [mscorlib]System.Delegate [mscorlib]System.Reflection.MethodInfo::CreateDelegate(class [mscorlib]System.Type,
object)
IL_0167: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_016c: castclass [mscorlib]System.Reflection.MethodInfo
IL_0171: ldc.i4.2
IL_0172: newarr [System.Core]System.Linq.Expressions.Expression
IL_0177: dup
IL_0178: ldc.i4.0
IL_0179: ldtoken [mscorlib]System.Action
IL_017e: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0183: ldtoken [mscorlib]System.Type
IL_0188: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_018d: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0192: stelem.ref
IL_0193: dup
IL_0194: ldc.i4.1
IL_0195: ldarg.0
IL_0196: ldtoken ExpressionTrees
IL_019b: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01a0: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_01a5: stelem.ref
IL_01a6: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_01ab: ldtoken [mscorlib]System.Action
IL_01b0: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01b5: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Type)
IL_01ba: ldc.i4.0
IL_01bb: ldtoken method bool [mscorlib]System.Delegate::op_Equality(class [mscorlib]System.Delegate,
class [mscorlib]System.Delegate)
IL_01c0: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_01c5: castclass [mscorlib]System.Reflection.MethodInfo
IL_01ca: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Equal(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression,
bool,
class [mscorlib]System.Reflection.MethodInfo)
IL_01cf: ldc.i4.1
IL_01d0: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_01d5: dup
IL_01d6: ldc.i4.0
IL_01d7: ldloc.0
IL_01d8: stelem.ref
IL_01d9: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_01de: stelem.ref
IL_01df: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_01e4: ldc.i4.0
IL_01e5: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_01ea: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_01ef: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_01f4: pop
IL_01f5: call object ExpressionTrees::X()
IL_01fa: ldarg.0
IL_01fb: ldtoken ExpressionTrees
IL_0200: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0205: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_020a: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>)
IL_020f: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0214: castclass [mscorlib]System.Reflection.MethodInfo
IL_0219: ldc.i4.1
IL_021a: newarr [System.Core]System.Linq.Expressions.Expression
IL_021f: dup
IL_0220: ldc.i4.0
IL_0221: ldtoken [mscorlib]System.Action
IL_0226: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_022b: ldstr "x"
IL_0230: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0235: stloc.0
IL_0236: ldloc.0
IL_0237: ldtoken method instance void ExpressionTrees::NestedLambda2()
IL_023c: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0241: castclass [mscorlib]System.Reflection.MethodInfo
IL_0246: ldtoken [mscorlib]System.Reflection.MethodInfo
IL_024b: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0250: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0255: ldtoken method instance class [mscorlib]System.Delegate [mscorlib]System.Reflection.MethodInfo::CreateDelegate(class [mscorlib]System.Type,
object)
IL_025a: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_025f: castclass [mscorlib]System.Reflection.MethodInfo
IL_0264: ldc.i4.2
IL_0265: newarr [System.Core]System.Linq.Expressions.Expression
IL_026a: dup
IL_026b: ldc.i4.0
IL_026c: ldtoken [mscorlib]System.Action
IL_0271: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0276: ldtoken [mscorlib]System.Type
IL_027b: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0280: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0285: stelem.ref
IL_0286: dup
IL_0287: ldc.i4.1
IL_0288: ldarg.0
IL_0289: ldtoken ExpressionTrees
IL_028e: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0293: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0298: stelem.ref
IL_0299: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_029e: ldtoken [mscorlib]System.Action
IL_02a3: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_02a8: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Type)
IL_02ad: ldc.i4.0
IL_02ae: ldtoken method bool [mscorlib]System.Delegate::op_Inequality(class [mscorlib]System.Delegate,
class [mscorlib]System.Delegate)
IL_02b3: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_02b8: castclass [mscorlib]System.Reflection.MethodInfo
IL_02bd: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::NotEqual(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression,
bool,
class [mscorlib]System.Reflection.MethodInfo)
IL_02c2: ldc.i4.1
IL_02c3: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_02c8: dup
IL_02c9: ldc.i4.0
IL_02ca: ldloc.0
IL_02cb: stelem.ref
IL_02cc: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_02d1: stelem.ref
IL_02d2: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_02d7: ldc.i4.0
IL_02d8: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_02dd: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_02e2: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_02e7: pop
IL_02e8: call object ExpressionTrees::X()
IL_02ed: ldarg.0
IL_02ee: ldtoken ExpressionTrees
IL_02f3: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_02f8: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_02fd: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_0302: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0307: castclass [mscorlib]System.Reflection.MethodInfo
IL_030c: ldc.i4.1
IL_030d: newarr [System.Core]System.Linq.Expressions.Expression
IL_0312: dup
IL_0313: ldc.i4.0
IL_0314: ldtoken [mscorlib]System.Int32
IL_0319: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_031e: ldstr "x"
IL_0323: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0328: stloc.0
IL_0329: ldloc.0
IL_032a: ldc.i4.s 37
IL_032c: box [mscorlib]System.Int32
IL_0331: ldtoken [mscorlib]System.Int32
IL_0336: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_033b: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0340: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Equal(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression)
IL_00de: ldc.i4.1
IL_00df: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00e4: dup
IL_00e5: ldc.i4.0
IL_00e6: ldloc.0
IL_00e7: stelem.ref
IL_00e8: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_0345: ldc.i4.1
IL_0346: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_034b: dup
IL_034c: ldc.i4.0
IL_034d: ldloc.0
IL_034e: stelem.ref
IL_034f: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_00ed: stelem.ref
IL_00ee: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_0354: stelem.ref
IL_0355: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_00f3: ldc.i4.0
IL_00f4: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00f9: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_035a: ldc.i4.0
IL_035b: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0360: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_00fe: call object ExpressionTrees::ToCode<bool>(object,
IL_0365: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0103: pop
IL_0104: call object ExpressionTrees::X()
IL_0109: ldarg.0
IL_010a: ldtoken ExpressionTrees
IL_010f: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0114: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0119: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_011e: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0123: castclass [mscorlib]System.Reflection.MethodInfo
IL_0128: ldc.i4.1
IL_0129: newarr [System.Core]System.Linq.Expressions.Expression
IL_012e: dup
IL_012f: ldc.i4.0
IL_0130: ldtoken [mscorlib]System.Int32
IL_0135: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_013a: ldstr "x"
IL_013f: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
IL_036a: pop
IL_036b: call object ExpressionTrees::X()
IL_0370: ldarg.0
IL_0371: ldtoken ExpressionTrees
IL_0376: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_037b: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0380: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_0385: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_038a: castclass [mscorlib]System.Reflection.MethodInfo
IL_038f: ldc.i4.1
IL_0390: newarr [System.Core]System.Linq.Expressions.Expression
IL_0395: dup
IL_0396: ldc.i4.0
IL_0397: ldtoken [mscorlib]System.Int32
IL_039c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_03a1: ldstr "x"
IL_03a6: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0144: stloc.0
IL_0145: ldc.i4.1
IL_0146: box [mscorlib]System.Boolean
IL_014b: ldtoken [mscorlib]System.Boolean
IL_0150: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0155: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_015a: ldc.i4.1
IL_015b: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0160: dup
IL_0161: ldc.i4.0
IL_0162: ldloc.0
IL_0163: stelem.ref
IL_0164: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_03ab: stloc.0
IL_03ac: ldc.i4.1
IL_03ad: box [mscorlib]System.Boolean
IL_03b2: ldtoken [mscorlib]System.Boolean
IL_03b7: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_03bc: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_03c1: ldc.i4.1
IL_03c2: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_03c7: dup
IL_03c8: ldc.i4.0
IL_03c9: ldloc.0
IL_03ca: stelem.ref
IL_03cb: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0169: stelem.ref
IL_016a: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_03d0: stelem.ref
IL_03d1: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_016f: ldc.i4.0
IL_0170: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0175: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_03d6: ldc.i4.0
IL_03d7: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_03dc: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_017a: call object ExpressionTrees::ToCode<bool>(object,
IL_03e1: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_017f: pop
IL_0180: call object ExpressionTrees::X()
IL_0185: ldarg.0
IL_0186: ldtoken ExpressionTrees
IL_018b: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0190: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0195: ldtoken method instance bool ExpressionTrees::Buzz(class [mscorlib]System.Func`2<int32,bool>)
IL_019a: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_019f: castclass [mscorlib]System.Reflection.MethodInfo
IL_01a4: ldc.i4.1
IL_01a5: newarr [System.Core]System.Linq.Expressions.Expression
IL_01aa: dup
IL_01ab: ldc.i4.0
IL_01ac: ldtoken [mscorlib]System.Int32
IL_01b1: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01b6: ldstr "x"
IL_01bb: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
IL_03e6: pop
IL_03e7: call object ExpressionTrees::X()
IL_03ec: ldarg.0
IL_03ed: ldtoken ExpressionTrees
IL_03f2: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_03f7: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_03fc: ldtoken method instance bool ExpressionTrees::Buzz(class [mscorlib]System.Func`2<int32,bool>)
IL_0401: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0406: castclass [mscorlib]System.Reflection.MethodInfo
IL_040b: ldc.i4.1
IL_040c: newarr [System.Core]System.Linq.Expressions.Expression
IL_0411: dup
IL_0412: ldc.i4.0
IL_0413: ldtoken [mscorlib]System.Int32
IL_0418: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_041d: ldstr "x"
IL_0422: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_01c0: stloc.0
IL_01c1: ldc.i4.1
IL_01c2: box [mscorlib]System.Boolean
IL_01c7: ldtoken [mscorlib]System.Boolean
IL_01cc: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01d1: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_01d6: ldc.i4.1
IL_01d7: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_01dc: dup
IL_01dd: ldc.i4.0
IL_01de: ldloc.0
IL_01df: stelem.ref
IL_01e0: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_0427: stloc.0
IL_0428: ldc.i4.1
IL_0429: box [mscorlib]System.Boolean
IL_042e: ldtoken [mscorlib]System.Boolean
IL_0433: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0438: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_043d: ldc.i4.1
IL_043e: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0443: dup
IL_0444: ldc.i4.0
IL_0445: ldloc.0
IL_0446: stelem.ref
IL_0447: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_01e5: stelem.ref
IL_01e6: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_044c: stelem.ref
IL_044d: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_01eb: ldc.i4.0
IL_01ec: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_01f1: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_0452: ldc.i4.0
IL_0453: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0458: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_01f6: call object ExpressionTrees::ToCode<bool>(object,
IL_045d: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_01fb: pop
IL_01fc: ret
IL_0462: pop
IL_0463: ret
} // end of method ExpressionTrees::NestedLambda2
.method public hidebysig instance void
@ -3718,25 +3945,25 @@ @@ -3718,25 +3945,25 @@
{
// Code size 270 (0x10e)
.maxstack 4
.locals init (class ExpressionTrees/'<>c__DisplayClass43_0' V_0)
IL_0000: newobj instance void ExpressionTrees/'<>c__DisplayClass43_0'::.ctor()
.locals init (class ExpressionTrees/'<>c__DisplayClass44_0' V_0)
IL_0000: newobj instance void ExpressionTrees/'<>c__DisplayClass44_0'::.ctor()
IL_0005: stloc.0
IL_0006: ldloc.0
IL_0007: ldc.i4.1
IL_0008: stfld bool ExpressionTrees/'<>c__DisplayClass43_0'::x
IL_0008: stfld bool ExpressionTrees/'<>c__DisplayClass44_0'::x
IL_000d: ldloc.0
IL_000e: ldc.i4.3
IL_000f: stfld int32 ExpressionTrees/'<>c__DisplayClass43_0'::y
IL_000f: stfld int32 ExpressionTrees/'<>c__DisplayClass44_0'::y
IL_0014: ldloc.0
IL_0015: ldc.i4.s 42
IL_0017: stfld uint8 ExpressionTrees/'<>c__DisplayClass43_0'::z
IL_0017: stfld uint8 ExpressionTrees/'<>c__DisplayClass44_0'::z
IL_001c: call object ExpressionTrees::X()
IL_0021: ldloc.0
IL_0022: ldtoken ExpressionTrees/'<>c__DisplayClass43_0'
IL_0022: ldtoken ExpressionTrees/'<>c__DisplayClass44_0'
IL_0027: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_002c: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0031: ldtoken field uint8 ExpressionTrees/'<>c__DisplayClass43_0'::z
IL_0031: ldtoken field uint8 ExpressionTrees/'<>c__DisplayClass44_0'::z
IL_0036: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_003b: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -3762,11 +3989,11 @@ @@ -3762,11 +3989,11 @@
IL_007e: pop
IL_007f: call object ExpressionTrees::X()
IL_0084: ldloc.0
IL_0085: ldtoken ExpressionTrees/'<>c__DisplayClass43_0'
IL_0085: ldtoken ExpressionTrees/'<>c__DisplayClass44_0'
IL_008a: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_008f: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0094: ldtoken field int32 ExpressionTrees/'<>c__DisplayClass43_0'::y
IL_0094: ldtoken field int32 ExpressionTrees/'<>c__DisplayClass44_0'::y
IL_0099: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_009e: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -3788,11 +4015,11 @@ @@ -3788,11 +4015,11 @@
IL_00d2: pop
IL_00d3: call object ExpressionTrees::X()
IL_00d8: ldloc.0
IL_00d9: ldtoken ExpressionTrees/'<>c__DisplayClass43_0'
IL_00d9: ldtoken ExpressionTrees/'<>c__DisplayClass44_0'
IL_00de: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00e3: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00e8: ldtoken field bool ExpressionTrees/'<>c__DisplayClass43_0'::x
IL_00e8: ldtoken field bool ExpressionTrees/'<>c__DisplayClass44_0'::x
IL_00ed: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_00f2: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -3812,8 +4039,8 @@ @@ -3812,8 +4039,8 @@
{
// Code size 288 (0x120)
.maxstack 8
.locals init (class ExpressionTrees/'<>c__DisplayClass44_0' V_0)
IL_0000: newobj instance void ExpressionTrees/'<>c__DisplayClass44_0'::.ctor()
.locals init (class ExpressionTrees/'<>c__DisplayClass45_0' V_0)
IL_0000: newobj instance void ExpressionTrees/'<>c__DisplayClass45_0'::.ctor()
IL_0005: stloc.0
IL_0006: ldloc.0
IL_0007: newobj instance void [System.Xml]System.Xml.XmlReaderSettings::.ctor()
@ -3823,7 +4050,7 @@ @@ -3823,7 +4050,7 @@
IL_0013: dup
IL_0014: ldc.i4.0
IL_0015: callvirt instance void [System.Xml]System.Xml.XmlReaderSettings::set_CheckCharacters(bool)
IL_001a: stfld class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass44_0'::s
IL_001a: stfld class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass45_0'::s
IL_001f: call object ExpressionTrees::X()
IL_0024: ldtoken [System.Xml]System.Xml.XmlReaderSettings
IL_0029: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
@ -3836,11 +4063,11 @@ @@ -3836,11 +4063,11 @@
IL_0040: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0045: castclass [mscorlib]System.Reflection.MethodInfo
IL_004a: ldloc.0
IL_004b: ldtoken ExpressionTrees/'<>c__DisplayClass44_0'
IL_004b: ldtoken ExpressionTrees/'<>c__DisplayClass45_0'
IL_0050: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0055: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_005a: ldtoken field class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass44_0'::s
IL_005a: ldtoken field class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass45_0'::s
IL_005f: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_0064: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -3858,11 +4085,11 @@ @@ -3858,11 +4085,11 @@
IL_008a: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_008f: castclass [mscorlib]System.Reflection.MethodInfo
IL_0094: ldloc.0
IL_0095: ldtoken ExpressionTrees/'<>c__DisplayClass44_0'
IL_0095: ldtoken ExpressionTrees/'<>c__DisplayClass45_0'
IL_009a: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_009f: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00a4: ldtoken field class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass44_0'::s
IL_00a4: ldtoken field class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass45_0'::s
IL_00a9: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_00ae: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -3884,11 +4111,11 @@ @@ -3884,11 +4111,11 @@
IL_00e7: dup
IL_00e8: ldc.i4.0
IL_00e9: ldloc.0
IL_00ea: ldtoken ExpressionTrees/'<>c__DisplayClass44_0'
IL_00ea: ldtoken ExpressionTrees/'<>c__DisplayClass45_0'
IL_00ef: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f4: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00f9: ldtoken field class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass44_0'::s
IL_00f9: ldtoken field class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass45_0'::s
IL_00fe: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_0103: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -4497,15 +4724,15 @@ @@ -4497,15 +4724,15 @@
{
// Code size 406 (0x196)
.maxstack 8
.locals init (class ExpressionTrees/'<>c__DisplayClass54_0' V_0)
IL_0000: newobj instance void ExpressionTrees/'<>c__DisplayClass54_0'::.ctor()
.locals init (class ExpressionTrees/'<>c__DisplayClass55_0' V_0)
IL_0000: newobj instance void ExpressionTrees/'<>c__DisplayClass55_0'::.ctor()
IL_0005: stloc.0
IL_0006: ldloc.0
IL_0007: ldc.i4.1
IL_0008: stfld int32 ExpressionTrees/'<>c__DisplayClass54_0'::i
IL_0008: stfld int32 ExpressionTrees/'<>c__DisplayClass55_0'::i
IL_000d: ldloc.0
IL_000e: ldstr "X"
IL_0013: stfld string ExpressionTrees/'<>c__DisplayClass54_0'::x
IL_0013: stfld string ExpressionTrees/'<>c__DisplayClass55_0'::x
IL_0018: call object ExpressionTrees::X()
IL_001d: ldstr "a\n\\b"
IL_0022: ldtoken [mscorlib]System.String
@ -4513,22 +4740,22 @@ @@ -4513,22 +4740,22 @@
IL_002c: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0031: ldloc.0
IL_0032: ldtoken ExpressionTrees/'<>c__DisplayClass54_0'
IL_0032: ldtoken ExpressionTrees/'<>c__DisplayClass55_0'
IL_0037: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_003c: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0041: ldtoken field string ExpressionTrees/'<>c__DisplayClass54_0'::x
IL_0041: ldtoken field string ExpressionTrees/'<>c__DisplayClass55_0'::x
IL_0046: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_004b: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
IL_0050: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Coalesce(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression)
IL_0055: ldloc.0
IL_0056: ldtoken ExpressionTrees/'<>c__DisplayClass54_0'
IL_0056: ldtoken ExpressionTrees/'<>c__DisplayClass55_0'
IL_005b: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0060: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0065: ldtoken field string ExpressionTrees/'<>c__DisplayClass54_0'::x
IL_0065: ldtoken field string ExpressionTrees/'<>c__DisplayClass55_0'::x
IL_006a: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_006f: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -4572,11 +4799,11 @@ @@ -4572,11 +4799,11 @@
IL_00f5: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00fa: ldloc.0
IL_00fb: ldtoken ExpressionTrees/'<>c__DisplayClass54_0'
IL_00fb: ldtoken ExpressionTrees/'<>c__DisplayClass55_0'
IL_0100: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0105: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_010a: ldtoken field int32 ExpressionTrees/'<>c__DisplayClass54_0'::i
IL_010a: ldtoken field int32 ExpressionTrees/'<>c__DisplayClass55_0'::i
IL_010f: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_0114: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)

517
ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.roslyn.il

@ -35,14 +35,14 @@ @@ -35,14 +35,14 @@
.ver 0:0:0:0
}
.module ExpressionTrees.dll
// MVID: {69A458ED-527F-4C9C-9A7C-CF5C957EC1ED}
// MVID: {10FA8BAD-7C03-45BA-B129-010B46E41B45}
.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
.imagebase 0x10000000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x01390000
// Image base: 0x02CC0000
// =============== CLASS MEMBERS DECLARATION ===================
@ -735,7 +735,7 @@ @@ -735,7 +735,7 @@
} // end of class '<>c__DisplayClass34_0'
.class auto ansi sealed nested private beforefieldinit '<>c__DisplayClass43_0'
.class auto ansi sealed nested private beforefieldinit '<>c__DisplayClass44_0'
extends [mscorlib]System.Object
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
@ -751,11 +751,11 @@ @@ -751,11 +751,11 @@
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: nop
IL_0007: ret
} // end of method '<>c__DisplayClass43_0'::.ctor
} // end of method '<>c__DisplayClass44_0'::.ctor
} // end of class '<>c__DisplayClass43_0'
} // end of class '<>c__DisplayClass44_0'
.class auto ansi sealed nested private beforefieldinit '<>c__DisplayClass44_0'
.class auto ansi sealed nested private beforefieldinit '<>c__DisplayClass45_0'
extends [mscorlib]System.Object
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
@ -769,11 +769,11 @@ @@ -769,11 +769,11 @@
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: nop
IL_0007: ret
} // end of method '<>c__DisplayClass44_0'::.ctor
} // end of method '<>c__DisplayClass45_0'::.ctor
} // end of class '<>c__DisplayClass44_0'
} // end of class '<>c__DisplayClass45_0'
.class auto ansi sealed nested private beforefieldinit '<>c__DisplayClass54_0'
.class auto ansi sealed nested private beforefieldinit '<>c__DisplayClass55_0'
extends [mscorlib]System.Object
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
@ -788,9 +788,9 @@ @@ -788,9 +788,9 @@
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: nop
IL_0007: ret
} // end of method '<>c__DisplayClass54_0'::.ctor
} // end of method '<>c__DisplayClass55_0'::.ctor
} // end of class '<>c__DisplayClass54_0'
} // end of class '<>c__DisplayClass55_0'
.field private int32 'field'
.method private hidebysig static object
@ -3444,11 +3444,28 @@ @@ -3444,11 +3444,28 @@
IL_0010: ret
} // end of method ExpressionTrees::Fizz
.method private hidebysig instance bool
Fizz(class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool> a) cil managed
{
// Code size 13 (0xd)
.maxstack 2
.locals init (bool V_0)
IL_0000: nop
IL_0001: ldarg.1
IL_0002: ldnull
IL_0003: callvirt instance !1 class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>::Invoke(!0)
IL_0008: stloc.0
IL_0009: br.s IL_000b
IL_000b: ldloc.0
IL_000c: ret
} // end of method ExpressionTrees::Fizz
.method public hidebysig instance void
NestedLambda2() cil managed
{
// Code size 510 (0x1fe)
.maxstack 11
// Code size 1125 (0x465)
.maxstack 14
.locals init (class [System.Core]System.Linq.Expressions.ParameterExpression V_0)
IL_0000: nop
IL_0001: call object ExpressionTrees::X()
@ -3503,136 +3520,352 @@ @@ -3503,136 +3520,352 @@
IL_008d: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0092: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0097: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_0097: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<string,bool>)
IL_009c: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00a1: castclass [mscorlib]System.Reflection.MethodInfo
IL_00a6: ldc.i4.1
IL_00a7: newarr [System.Core]System.Linq.Expressions.Expression
IL_00ac: dup
IL_00ad: ldc.i4.0
IL_00ae: ldtoken [mscorlib]System.Int32
IL_00ae: ldtoken [mscorlib]System.String
IL_00b3: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00b8: ldstr "x"
IL_00bd: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_00c2: stloc.0
IL_00c3: ldloc.0
IL_00c4: ldc.i4.s 37
IL_00c6: box [mscorlib]System.Int32
IL_00cb: ldtoken [mscorlib]System.Int32
IL_00d0: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00d5: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
IL_00c4: ldstr "a"
IL_00c9: ldtoken [mscorlib]System.String
IL_00ce: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00d3: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00da: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Equal(class [System.Core]System.Linq.Expressions.Expression,
IL_00d8: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::NotEqual(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression)
IL_00dd: ldc.i4.1
IL_00de: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00e3: dup
IL_00e4: ldc.i4.0
IL_00e5: ldloc.0
IL_00e6: stelem.ref
IL_00e7: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<string,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_00ec: stelem.ref
IL_00ed: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_00f2: ldc.i4.0
IL_00f3: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00f8: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_00fd: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0102: pop
IL_0103: call object ExpressionTrees::X()
IL_0108: ldarg.0
IL_0109: ldtoken ExpressionTrees
IL_010e: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0113: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0118: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>)
IL_011d: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0122: castclass [mscorlib]System.Reflection.MethodInfo
IL_0127: ldc.i4.1
IL_0128: newarr [System.Core]System.Linq.Expressions.Expression
IL_012d: dup
IL_012e: ldc.i4.0
IL_012f: ldtoken [mscorlib]System.Action
IL_0134: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0139: ldstr "x"
IL_013e: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0143: stloc.0
IL_0144: ldloc.0
IL_0145: ldtoken method instance void ExpressionTrees::NestedLambda2()
IL_014a: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_014f: castclass [mscorlib]System.Reflection.MethodInfo
IL_0154: ldtoken [mscorlib]System.Reflection.MethodInfo
IL_0159: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_015e: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0163: ldtoken method instance class [mscorlib]System.Delegate [mscorlib]System.Reflection.MethodInfo::CreateDelegate(class [mscorlib]System.Type,
object)
IL_0168: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_016d: castclass [mscorlib]System.Reflection.MethodInfo
IL_0172: ldc.i4.2
IL_0173: newarr [System.Core]System.Linq.Expressions.Expression
IL_0178: dup
IL_0179: ldc.i4.0
IL_017a: ldtoken [mscorlib]System.Action
IL_017f: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0184: ldtoken [mscorlib]System.Type
IL_0189: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_018e: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0193: stelem.ref
IL_0194: dup
IL_0195: ldc.i4.1
IL_0196: ldarg.0
IL_0197: ldtoken ExpressionTrees
IL_019c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01a1: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_01a6: stelem.ref
IL_01a7: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_01ac: ldtoken [mscorlib]System.Action
IL_01b1: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01b6: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Type)
IL_01bb: ldc.i4.0
IL_01bc: ldtoken method bool [mscorlib]System.Delegate::op_Equality(class [mscorlib]System.Delegate,
class [mscorlib]System.Delegate)
IL_01c1: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_01c6: castclass [mscorlib]System.Reflection.MethodInfo
IL_01cb: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Equal(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression,
bool,
class [mscorlib]System.Reflection.MethodInfo)
IL_01d0: ldc.i4.1
IL_01d1: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_01d6: dup
IL_01d7: ldc.i4.0
IL_01d8: ldloc.0
IL_01d9: stelem.ref
IL_01da: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_01df: stelem.ref
IL_01e0: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_01e5: ldc.i4.0
IL_01e6: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_01eb: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_01f0: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_01f5: pop
IL_01f6: call object ExpressionTrees::X()
IL_01fb: ldarg.0
IL_01fc: ldtoken ExpressionTrees
IL_0201: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0206: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_020b: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>)
IL_0210: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0215: castclass [mscorlib]System.Reflection.MethodInfo
IL_021a: ldc.i4.1
IL_021b: newarr [System.Core]System.Linq.Expressions.Expression
IL_0220: dup
IL_0221: ldc.i4.0
IL_0222: ldtoken [mscorlib]System.Action
IL_0227: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_022c: ldstr "x"
IL_0231: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0236: stloc.0
IL_0237: ldloc.0
IL_0238: ldtoken method instance void ExpressionTrees::NestedLambda2()
IL_023d: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0242: castclass [mscorlib]System.Reflection.MethodInfo
IL_0247: ldtoken [mscorlib]System.Reflection.MethodInfo
IL_024c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0251: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0256: ldtoken method instance class [mscorlib]System.Delegate [mscorlib]System.Reflection.MethodInfo::CreateDelegate(class [mscorlib]System.Type,
object)
IL_025b: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0260: castclass [mscorlib]System.Reflection.MethodInfo
IL_0265: ldc.i4.2
IL_0266: newarr [System.Core]System.Linq.Expressions.Expression
IL_026b: dup
IL_026c: ldc.i4.0
IL_026d: ldtoken [mscorlib]System.Action
IL_0272: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0277: ldtoken [mscorlib]System.Type
IL_027c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0281: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0286: stelem.ref
IL_0287: dup
IL_0288: ldc.i4.1
IL_0289: ldarg.0
IL_028a: ldtoken ExpressionTrees
IL_028f: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0294: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0299: stelem.ref
IL_029a: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_029f: ldtoken [mscorlib]System.Action
IL_02a4: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_02a9: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Type)
IL_02ae: ldc.i4.0
IL_02af: ldtoken method bool [mscorlib]System.Delegate::op_Inequality(class [mscorlib]System.Delegate,
class [mscorlib]System.Delegate)
IL_02b4: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_02b9: castclass [mscorlib]System.Reflection.MethodInfo
IL_02be: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::NotEqual(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression,
bool,
class [mscorlib]System.Reflection.MethodInfo)
IL_02c3: ldc.i4.1
IL_02c4: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_02c9: dup
IL_02ca: ldc.i4.0
IL_02cb: ldloc.0
IL_02cc: stelem.ref
IL_02cd: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<class [mscorlib]System.Action,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_02d2: stelem.ref
IL_02d3: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_02d8: ldc.i4.0
IL_02d9: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_02de: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_02e3: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_02e8: pop
IL_02e9: call object ExpressionTrees::X()
IL_02ee: ldarg.0
IL_02ef: ldtoken ExpressionTrees
IL_02f4: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_02f9: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_02fe: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_0303: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0308: castclass [mscorlib]System.Reflection.MethodInfo
IL_030d: ldc.i4.1
IL_030e: newarr [System.Core]System.Linq.Expressions.Expression
IL_0313: dup
IL_0314: ldc.i4.0
IL_0315: ldtoken [mscorlib]System.Int32
IL_031a: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_031f: ldstr "x"
IL_0324: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0329: stloc.0
IL_032a: ldloc.0
IL_032b: ldc.i4.s 37
IL_032d: box [mscorlib]System.Int32
IL_0332: ldtoken [mscorlib]System.Int32
IL_0337: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_033c: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0341: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Equal(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression)
IL_00df: ldc.i4.1
IL_00e0: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00e5: dup
IL_00e6: ldc.i4.0
IL_00e7: ldloc.0
IL_00e8: stelem.ref
IL_00e9: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_0346: ldc.i4.1
IL_0347: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_034c: dup
IL_034d: ldc.i4.0
IL_034e: ldloc.0
IL_034f: stelem.ref
IL_0350: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_00ee: stelem.ref
IL_00ef: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_0355: stelem.ref
IL_0356: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_00f4: ldc.i4.0
IL_00f5: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00fa: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_035b: ldc.i4.0
IL_035c: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0361: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_00ff: call object ExpressionTrees::ToCode<bool>(object,
IL_0366: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0104: pop
IL_0105: call object ExpressionTrees::X()
IL_010a: ldarg.0
IL_010b: ldtoken ExpressionTrees
IL_0110: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0115: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_011a: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_011f: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0124: castclass [mscorlib]System.Reflection.MethodInfo
IL_0129: ldc.i4.1
IL_012a: newarr [System.Core]System.Linq.Expressions.Expression
IL_012f: dup
IL_0130: ldc.i4.0
IL_0131: ldtoken [mscorlib]System.Int32
IL_0136: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_013b: ldstr "x"
IL_0140: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
IL_036b: pop
IL_036c: call object ExpressionTrees::X()
IL_0371: ldarg.0
IL_0372: ldtoken ExpressionTrees
IL_0377: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_037c: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0381: ldtoken method instance bool ExpressionTrees::Fizz(class [mscorlib]System.Func`2<int32,bool>)
IL_0386: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_038b: castclass [mscorlib]System.Reflection.MethodInfo
IL_0390: ldc.i4.1
IL_0391: newarr [System.Core]System.Linq.Expressions.Expression
IL_0396: dup
IL_0397: ldc.i4.0
IL_0398: ldtoken [mscorlib]System.Int32
IL_039d: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_03a2: ldstr "x"
IL_03a7: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_0145: stloc.0
IL_0146: ldc.i4.1
IL_0147: box [mscorlib]System.Boolean
IL_014c: ldtoken [mscorlib]System.Boolean
IL_0151: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0156: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_015b: ldc.i4.1
IL_015c: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0161: dup
IL_0162: ldc.i4.0
IL_0163: ldloc.0
IL_0164: stelem.ref
IL_0165: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_03ac: stloc.0
IL_03ad: ldc.i4.1
IL_03ae: box [mscorlib]System.Boolean
IL_03b3: ldtoken [mscorlib]System.Boolean
IL_03b8: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_03bd: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_03c2: ldc.i4.1
IL_03c3: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_03c8: dup
IL_03c9: ldc.i4.0
IL_03ca: ldloc.0
IL_03cb: stelem.ref
IL_03cc: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_016a: stelem.ref
IL_016b: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_03d1: stelem.ref
IL_03d2: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_0170: ldc.i4.0
IL_0171: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0176: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_03d7: ldc.i4.0
IL_03d8: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_03dd: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_017b: call object ExpressionTrees::ToCode<bool>(object,
IL_03e2: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0180: pop
IL_0181: call object ExpressionTrees::X()
IL_0186: ldarg.0
IL_0187: ldtoken ExpressionTrees
IL_018c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0191: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0196: ldtoken method instance bool ExpressionTrees::Buzz(class [mscorlib]System.Func`2<int32,bool>)
IL_019b: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_01a0: castclass [mscorlib]System.Reflection.MethodInfo
IL_01a5: ldc.i4.1
IL_01a6: newarr [System.Core]System.Linq.Expressions.Expression
IL_01ab: dup
IL_01ac: ldc.i4.0
IL_01ad: ldtoken [mscorlib]System.Int32
IL_01b2: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01b7: ldstr "x"
IL_01bc: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
IL_03e7: pop
IL_03e8: call object ExpressionTrees::X()
IL_03ed: ldarg.0
IL_03ee: ldtoken ExpressionTrees
IL_03f3: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_03f8: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_03fd: ldtoken method instance bool ExpressionTrees::Buzz(class [mscorlib]System.Func`2<int32,bool>)
IL_0402: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0407: castclass [mscorlib]System.Reflection.MethodInfo
IL_040c: ldc.i4.1
IL_040d: newarr [System.Core]System.Linq.Expressions.Expression
IL_0412: dup
IL_0413: ldc.i4.0
IL_0414: ldtoken [mscorlib]System.Int32
IL_0419: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_041e: ldstr "x"
IL_0423: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type,
string)
IL_01c1: stloc.0
IL_01c2: ldc.i4.1
IL_01c3: box [mscorlib]System.Boolean
IL_01c8: ldtoken [mscorlib]System.Boolean
IL_01cd: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_01d2: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_01d7: ldc.i4.1
IL_01d8: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_01dd: dup
IL_01de: ldc.i4.0
IL_01df: ldloc.0
IL_01e0: stelem.ref
IL_01e1: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_0428: stloc.0
IL_0429: ldc.i4.1
IL_042a: box [mscorlib]System.Boolean
IL_042f: ldtoken [mscorlib]System.Boolean
IL_0434: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0439: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_043e: ldc.i4.1
IL_043f: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0444: dup
IL_0445: ldc.i4.0
IL_0446: ldloc.0
IL_0447: stelem.ref
IL_0448: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`2<int32,bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_01e6: stelem.ref
IL_01e7: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_044d: stelem.ref
IL_044e: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.MethodInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_01ec: ldc.i4.0
IL_01ed: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_01f2: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
IL_0453: ldc.i4.0
IL_0454: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0459: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<bool>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_01f7: call object ExpressionTrees::ToCode<bool>(object,
IL_045e: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_01fc: pop
IL_01fd: ret
IL_0463: pop
IL_0464: ret
} // end of method ExpressionTrees::NestedLambda2
.method public hidebysig instance void
@ -3818,26 +4051,26 @@ @@ -3818,26 +4051,26 @@
{
// Code size 271 (0x10f)
.maxstack 4
.locals init (class ExpressionTrees/'<>c__DisplayClass43_0' V_0)
IL_0000: newobj instance void ExpressionTrees/'<>c__DisplayClass43_0'::.ctor()
.locals init (class ExpressionTrees/'<>c__DisplayClass44_0' V_0)
IL_0000: newobj instance void ExpressionTrees/'<>c__DisplayClass44_0'::.ctor()
IL_0005: stloc.0
IL_0006: nop
IL_0007: ldloc.0
IL_0008: ldc.i4.1
IL_0009: stfld bool ExpressionTrees/'<>c__DisplayClass43_0'::x
IL_0009: stfld bool ExpressionTrees/'<>c__DisplayClass44_0'::x
IL_000e: ldloc.0
IL_000f: ldc.i4.3
IL_0010: stfld int32 ExpressionTrees/'<>c__DisplayClass43_0'::y
IL_0010: stfld int32 ExpressionTrees/'<>c__DisplayClass44_0'::y
IL_0015: ldloc.0
IL_0016: ldc.i4.s 42
IL_0018: stfld uint8 ExpressionTrees/'<>c__DisplayClass43_0'::z
IL_0018: stfld uint8 ExpressionTrees/'<>c__DisplayClass44_0'::z
IL_001d: call object ExpressionTrees::X()
IL_0022: ldloc.0
IL_0023: ldtoken ExpressionTrees/'<>c__DisplayClass43_0'
IL_0023: ldtoken ExpressionTrees/'<>c__DisplayClass44_0'
IL_0028: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_002d: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0032: ldtoken field uint8 ExpressionTrees/'<>c__DisplayClass43_0'::z
IL_0032: ldtoken field uint8 ExpressionTrees/'<>c__DisplayClass44_0'::z
IL_0037: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_003c: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -3863,11 +4096,11 @@ @@ -3863,11 +4096,11 @@
IL_007f: pop
IL_0080: call object ExpressionTrees::X()
IL_0085: ldloc.0
IL_0086: ldtoken ExpressionTrees/'<>c__DisplayClass43_0'
IL_0086: ldtoken ExpressionTrees/'<>c__DisplayClass44_0'
IL_008b: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0090: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0095: ldtoken field int32 ExpressionTrees/'<>c__DisplayClass43_0'::y
IL_0095: ldtoken field int32 ExpressionTrees/'<>c__DisplayClass44_0'::y
IL_009a: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_009f: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -3889,11 +4122,11 @@ @@ -3889,11 +4122,11 @@
IL_00d3: pop
IL_00d4: call object ExpressionTrees::X()
IL_00d9: ldloc.0
IL_00da: ldtoken ExpressionTrees/'<>c__DisplayClass43_0'
IL_00da: ldtoken ExpressionTrees/'<>c__DisplayClass44_0'
IL_00df: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00e4: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00e9: ldtoken field bool ExpressionTrees/'<>c__DisplayClass43_0'::x
IL_00e9: ldtoken field bool ExpressionTrees/'<>c__DisplayClass44_0'::x
IL_00ee: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_00f3: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -3913,8 +4146,8 @@ @@ -3913,8 +4146,8 @@
{
// Code size 291 (0x123)
.maxstack 8
.locals init (class ExpressionTrees/'<>c__DisplayClass44_0' V_0)
IL_0000: newobj instance void ExpressionTrees/'<>c__DisplayClass44_0'::.ctor()
.locals init (class ExpressionTrees/'<>c__DisplayClass45_0' V_0)
IL_0000: newobj instance void ExpressionTrees/'<>c__DisplayClass45_0'::.ctor()
IL_0005: stloc.0
IL_0006: nop
IL_0007: ldloc.0
@ -3927,7 +4160,7 @@ @@ -3927,7 +4160,7 @@
IL_0016: ldc.i4.0
IL_0017: callvirt instance void [System.Xml]System.Xml.XmlReaderSettings::set_CheckCharacters(bool)
IL_001c: nop
IL_001d: stfld class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass44_0'::s
IL_001d: stfld class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass45_0'::s
IL_0022: call object ExpressionTrees::X()
IL_0027: ldtoken [System.Xml]System.Xml.XmlReaderSettings
IL_002c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
@ -3940,11 +4173,11 @@ @@ -3940,11 +4173,11 @@
IL_0043: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0048: castclass [mscorlib]System.Reflection.MethodInfo
IL_004d: ldloc.0
IL_004e: ldtoken ExpressionTrees/'<>c__DisplayClass44_0'
IL_004e: ldtoken ExpressionTrees/'<>c__DisplayClass45_0'
IL_0053: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0058: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_005d: ldtoken field class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass44_0'::s
IL_005d: ldtoken field class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass45_0'::s
IL_0062: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_0067: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -3962,11 +4195,11 @@ @@ -3962,11 +4195,11 @@
IL_008d: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0092: castclass [mscorlib]System.Reflection.MethodInfo
IL_0097: ldloc.0
IL_0098: ldtoken ExpressionTrees/'<>c__DisplayClass44_0'
IL_0098: ldtoken ExpressionTrees/'<>c__DisplayClass45_0'
IL_009d: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00a2: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00a7: ldtoken field class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass44_0'::s
IL_00a7: ldtoken field class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass45_0'::s
IL_00ac: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_00b1: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -3988,11 +4221,11 @@ @@ -3988,11 +4221,11 @@
IL_00ea: dup
IL_00eb: ldc.i4.0
IL_00ec: ldloc.0
IL_00ed: ldtoken ExpressionTrees/'<>c__DisplayClass44_0'
IL_00ed: ldtoken ExpressionTrees/'<>c__DisplayClass45_0'
IL_00f2: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f7: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00fc: ldtoken field class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass44_0'::s
IL_00fc: ldtoken field class [System.Xml]System.Xml.XmlReaderSettings ExpressionTrees/'<>c__DisplayClass45_0'::s
IL_0101: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_0106: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -4610,16 +4843,16 @@ @@ -4610,16 +4843,16 @@
{
// Code size 407 (0x197)
.maxstack 8
.locals init (class ExpressionTrees/'<>c__DisplayClass54_0' V_0)
IL_0000: newobj instance void ExpressionTrees/'<>c__DisplayClass54_0'::.ctor()
.locals init (class ExpressionTrees/'<>c__DisplayClass55_0' V_0)
IL_0000: newobj instance void ExpressionTrees/'<>c__DisplayClass55_0'::.ctor()
IL_0005: stloc.0
IL_0006: nop
IL_0007: ldloc.0
IL_0008: ldc.i4.1
IL_0009: stfld int32 ExpressionTrees/'<>c__DisplayClass54_0'::i
IL_0009: stfld int32 ExpressionTrees/'<>c__DisplayClass55_0'::i
IL_000e: ldloc.0
IL_000f: ldstr "X"
IL_0014: stfld string ExpressionTrees/'<>c__DisplayClass54_0'::x
IL_0014: stfld string ExpressionTrees/'<>c__DisplayClass55_0'::x
IL_0019: call object ExpressionTrees::X()
IL_001e: ldstr "a\n\\b"
IL_0023: ldtoken [mscorlib]System.String
@ -4627,22 +4860,22 @@ @@ -4627,22 +4860,22 @@
IL_002d: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0032: ldloc.0
IL_0033: ldtoken ExpressionTrees/'<>c__DisplayClass54_0'
IL_0033: ldtoken ExpressionTrees/'<>c__DisplayClass55_0'
IL_0038: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_003d: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0042: ldtoken field string ExpressionTrees/'<>c__DisplayClass54_0'::x
IL_0042: ldtoken field string ExpressionTrees/'<>c__DisplayClass55_0'::x
IL_0047: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_004c: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
IL_0051: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::Coalesce(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression)
IL_0056: ldloc.0
IL_0057: ldtoken ExpressionTrees/'<>c__DisplayClass54_0'
IL_0057: ldtoken ExpressionTrees/'<>c__DisplayClass55_0'
IL_005c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0061: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0066: ldtoken field string ExpressionTrees/'<>c__DisplayClass54_0'::x
IL_0066: ldtoken field string ExpressionTrees/'<>c__DisplayClass55_0'::x
IL_006b: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_0070: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)
@ -4686,11 +4919,11 @@ @@ -4686,11 +4919,11 @@
IL_00f6: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00fb: ldloc.0
IL_00fc: ldtoken ExpressionTrees/'<>c__DisplayClass54_0'
IL_00fc: ldtoken ExpressionTrees/'<>c__DisplayClass55_0'
IL_0101: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0106: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_010b: ldtoken field int32 ExpressionTrees/'<>c__DisplayClass54_0'::i
IL_010b: ldtoken field int32 ExpressionTrees/'<>c__DisplayClass55_0'::i
IL_0110: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_0115: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
class [mscorlib]System.Reflection.FieldInfo)

28
ICSharpCode.Decompiler/IL/Transforms/TransformExpressionTrees.cs

@ -21,6 +21,8 @@ using System.Collections.Generic; @@ -21,6 +21,8 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using ICSharpCode.Decompiler.CSharp.Resolver;
using ICSharpCode.Decompiler.CSharp.Syntax;
using ICSharpCode.Decompiler.Semantics;
using ICSharpCode.Decompiler.TypeSystem;
using ICSharpCode.Decompiler.TypeSystem.Implementation;
using ICSharpCode.Decompiler.Util;
@ -93,11 +95,13 @@ namespace ICSharpCode.Decompiler.IL.Transforms @@ -93,11 +95,13 @@ namespace ICSharpCode.Decompiler.IL.Transforms
List<ILInstruction> instructionsToRemove;
Stack<ILFunction> lambdaStack;
CSharpConversions conversions;
CSharpResolver resolver;
public void Run(Block block, int pos, StatementTransformContext context)
{
this.context = context;
this.conversions = CSharpConversions.Get(context.TypeSystem.Compilation);
this.resolver = new CSharpResolver(context.TypeSystem.Compilation);
this.parameters = new Dictionary<ILVariable, (IType, string)>();
this.parameterMapping = new Dictionary<ILVariable, ILVariable>();
this.instructionsToRemove = new List<ILInstruction>();
@ -248,7 +252,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms @@ -248,7 +252,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms
case "GreaterThan":
return ConvertComparison(invocation, ComparisonKind.GreaterThan);
case "GreaterThanOrEqual":
return ConvertComparison(invocation, ComparisonKind.GreaterThanOrEqual);
return ConvertComparison(invocation, ComparisonKind.GreaterThanOrEqual);
case "Invoke":
return ConvertInvoke(invocation);
case "Lambda":
@ -534,6 +538,28 @@ namespace ICSharpCode.Decompiler.IL.Transforms @@ -534,6 +538,28 @@ namespace ICSharpCode.Decompiler.IL.Transforms
}
return (new Call((IMethod)method) { Arguments = { left, right } }, method.ReturnType);
}
var rr = resolver.ResolveBinaryOperator(kind.ToBinaryOperatorType(), new ResolveResult(leftType), new ResolveResult(rightType)) as OperatorResolveResult;
if (rr != null && !rr.IsError && rr.UserDefinedOperatorMethod != null) {
return (new Call(rr.UserDefinedOperatorMethod) { Arguments = { left, right } }, rr.UserDefinedOperatorMethod.ReturnType);
}
if (leftType.IsKnownType(KnownTypeCode.String) && rightType.IsKnownType(KnownTypeCode.String)) {
IMethod operatorMethod;
switch (kind) {
case ComparisonKind.Equality:
operatorMethod = leftType.GetMethods(m => m.IsOperator && m.Name == "op_Equality" && m.Parameters.Count == 2).FirstOrDefault(m => m.Parameters[0].Type.IsKnownType(KnownTypeCode.String) && m.Parameters[1].Type.IsKnownType(KnownTypeCode.String));
if (operatorMethod == null)
return (null, SpecialType.UnknownType);
break;
case ComparisonKind.Inequality:
operatorMethod = leftType.GetMethods(m => m.IsOperator && m.Name == "op_Inequality" && m.Parameters.Count == 2).FirstOrDefault(m => m.Parameters[0].Type.IsKnownType(KnownTypeCode.String) && m.Parameters[1].Type.IsKnownType(KnownTypeCode.String));
if (operatorMethod == null)
return (null, SpecialType.UnknownType);
break;
default:
return (null, SpecialType.UnknownType);
}
return (new Call(operatorMethod) { Arguments = { left, right } }, operatorMethod.ReturnType);
}
var resultType = context.TypeSystem.Compilation.FindType(KnownTypeCode.Boolean);
return (new Comp(kind, NullableType.IsNullable(leftType) ? ComparisonLiftingKind.CSharp : ComparisonLiftingKind.None, leftType.GetStackType(), leftType.GetSign(), left, right), resultType);
}

Loading…
Cancel
Save