Browse Source

Update tests

pull/988/head
Siegfried Pammer 8 years ago
parent
commit
352707d396
  1. 6
      ICSharpCode.Decompiler.Tests/CorrectnessTestRunner.cs
  2. 27
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.cs
  3. 313
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.il
  4. 300
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.opt.il
  5. 258
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.opt.roslyn.il
  6. 272
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExpressionTrees.roslyn.il

6
ICSharpCode.Decompiler.Tests/CorrectnessTestRunner.cs

@ -155,6 +155,12 @@ namespace ICSharpCode.Decompiler.Tests @@ -155,6 +155,12 @@ namespace ICSharpCode.Decompiler.Tests
RunCS(options: options);
}
[Test]
public void ExpressionTrees([ValueSource("defaultOptions")] CompilerOptions options)
{
RunCS(options: options);
}
[Test]
public void BitNot([Values(false, true)] bool force32Bit)
{

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

@ -223,7 +223,6 @@ public class ExpressionTrees @@ -223,7 +223,6 @@ public class ExpressionTrees
public void DoAssert()
{
this.field = 37;
ExpressionTrees.ToCode(ExpressionTrees.X(), () => this.field != this.C());
ExpressionTrees.ToCode(ExpressionTrees.X(), () => !object.ReferenceEquals(this, new ExpressionTrees()));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => this.MyEquals(this) && !this.MyEquals(null));
@ -231,12 +230,12 @@ public class ExpressionTrees @@ -231,12 +230,12 @@ public class ExpressionTrees
private int C()
{
return this.field + 5;
throw new NotImplementedException();
}
private bool MyEquals(ExpressionTrees other)
{
return other != null && this.field == other.field;
throw new NotImplementedException();
}
public void MethodGroupAsExtensionMethod()
@ -286,10 +285,11 @@ public class ExpressionTrees @@ -286,10 +285,11 @@ public class ExpressionTrees
//no params
ExpressionTrees.ToCode(ExpressionTrees.X(), () => call(() => 42));
//one param
ExpressionTrees.ToCode(ExpressionTrees.X(), () => new int[2] {
ExpressionTrees.ToCode(ExpressionTrees.X(), () => from x in new int[2] {
37,
42
}.Select(x => x * 2));
}
select x * 2);
//two params
ExpressionTrees.ToCode(ExpressionTrees.X(), () => new int[2] {
37,
@ -319,11 +319,11 @@ public class ExpressionTrees @@ -319,11 +319,11 @@ public class ExpressionTrees
public void NestedLambda2()
{
ExpressionTrees.ToCode(ExpressionTrees.X(), () => Fizz(x => x == "a"));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => Fizz(x => x == 37));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => this.Fizz((string x) => x == "a"));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => this.Fizz((int x) => x == 37));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => Fizz((int x) => true));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => Buzz(x => true));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => this.Fizz((int x) => true));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => this.Buzz((int x) => true));
}
public void NewArrayAndExtensionMethod()
@ -354,7 +354,7 @@ public class ExpressionTrees @@ -354,7 +354,7 @@ public class ExpressionTrees
bool x = true;
int y = 3;
byte z = 42;
ExpressionTrees.ToCode(ExpressionTrees.X(), () => ~(int)z == 0);
ExpressionTrees.ToCode(ExpressionTrees.X(), () => ~z == 0);
ExpressionTrees.ToCode(ExpressionTrees.X(), () => ~y == 0);
ExpressionTrees.ToCode(ExpressionTrees.X(), () => !x);
}
@ -383,12 +383,13 @@ public class ExpressionTrees @@ -383,12 +383,13 @@ public class ExpressionTrees
public void QuotedWithAnonymous()
{
ExpressionTrees.ToCode(ExpressionTrees.X(), () => new[] {
ExpressionTrees.ToCode(ExpressionTrees.X(), () => (from o in new[] {
new {
X = "a",
Y = "b"
}
}.Select(o => o.X + o.Y).Single());
}
select o.X + o.Y).Single());
}
public void StaticCall()
@ -428,7 +429,7 @@ public class ExpressionTrees @@ -428,7 +429,7 @@ public class ExpressionTrees
{
int i = 1;
string x = "X";
ExpressionTrees.ToCode(ExpressionTrees.X(), () => (("a\n\\b" ?? x) + x).Length == 2 ? false : true && (1m + (decimal)-i > 0m || false));
ExpressionTrees.ToCode(ExpressionTrees.X(), () => ((("a\n\\b" ?? x) + x).Length == 2) ? false : (true && (1m + (decimal)(-i) > 0m || false)));
}
public void GenericClassInstance()

313
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 pwk1zrwf
.assembly '05r5is52'
{
.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 pwk1zrwf.dll
// MVID: {F6BFC7E4-C360-4730-8ABB-47735EBDDEBC}
.module '05r5is52.dll'
// MVID: {F70BBCF1-4F46-4420-BD20-CAE864CFD4A5}
.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: 0x00CE0000
// Image base: 0x00F10000
// =============== CLASS MEMBERS DECLARATION ===================
@ -2136,199 +2136,172 @@ @@ -2136,199 +2136,172 @@
.method public hidebysig instance void
DoAssert() cil managed
{
// Code size 407 (0x197)
// Code size 399 (0x18f)
.maxstack 8
.locals init (class [System.Core]System.Linq.Expressions.Expression[] V_0)
IL_0000: nop
IL_0001: ldarg.0
IL_0002: ldc.i4.s 37
IL_0004: stfld int32 ExpressionTrees::'field'
IL_0009: call object ExpressionTrees::X()
IL_000e: ldarg.0
IL_000f: box ExpressionTrees
IL_0014: ldtoken ExpressionTrees
IL_0019: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_001e: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
IL_0001: call object ExpressionTrees::X()
IL_0006: ldarg.0
IL_0007: box ExpressionTrees
IL_000c: ldtoken ExpressionTrees
IL_0011: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0016: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0023: ldtoken field int32 ExpressionTrees::'field'
IL_0028: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_002d: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
IL_001b: ldtoken field int32 ExpressionTrees::'field'
IL_0020: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_0025: 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_0032: ldarg.0
IL_0033: box ExpressionTrees
IL_0038: ldtoken ExpressionTrees
IL_003d: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0042: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
IL_002a: ldarg.0
IL_002b: box ExpressionTrees
IL_0030: ldtoken ExpressionTrees
IL_0035: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_003a: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0047: ldtoken method instance int32 ExpressionTrees::C()
IL_004c: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0051: castclass [mscorlib]System.Reflection.MethodInfo
IL_0056: ldc.i4.0
IL_0057: newarr [System.Core]System.Linq.Expressions.Expression
IL_005c: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_003f: ldtoken method instance int32 ExpressionTrees::C()
IL_0044: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0049: castclass [mscorlib]System.Reflection.MethodInfo
IL_004e: ldc.i4.0
IL_004f: newarr [System.Core]System.Linq.Expressions.Expression
IL_0054: 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_0061: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::NotEqual(class [System.Core]System.Linq.Expressions.Expression,
IL_0059: 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_0066: ldc.i4.0
IL_0067: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_006c: 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_005e: ldc.i4.0
IL_005f: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0064: 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_0071: call object ExpressionTrees::ToCode<bool>(object,
IL_0069: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0076: pop
IL_0077: call object ExpressionTrees::X()
IL_007c: ldnull
IL_007d: ldtoken method bool [mscorlib]System.Object::ReferenceEquals(object,
IL_006e: pop
IL_006f: call object ExpressionTrees::X()
IL_0074: ldnull
IL_0075: ldtoken method bool [mscorlib]System.Object::ReferenceEquals(object,
object)
IL_0082: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0087: castclass [mscorlib]System.Reflection.MethodInfo
IL_008c: ldc.i4.2
IL_008d: newarr [System.Core]System.Linq.Expressions.Expression
IL_0092: stloc.0
IL_0093: ldloc.0
IL_0094: ldc.i4.0
IL_0095: ldarg.0
IL_0096: box ExpressionTrees
IL_009b: ldtoken ExpressionTrees
IL_00a0: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00a5: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00aa: stelem.ref
IL_00ab: ldloc.0
IL_00ac: ldc.i4.1
IL_00ad: ldtoken method instance void ExpressionTrees::.ctor()
IL_00b2: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00b7: castclass [mscorlib]System.Reflection.ConstructorInfo
IL_00bc: ldc.i4.0
IL_00bd: newarr [System.Core]System.Linq.Expressions.Expression
IL_00c2: call class [System.Core]System.Linq.Expressions.NewExpression [System.Core]System.Linq.Expressions.Expression::New(class [mscorlib]System.Reflection.ConstructorInfo,
IL_007a: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_007f: castclass [mscorlib]System.Reflection.MethodInfo
IL_0084: ldc.i4.2
IL_0085: newarr [System.Core]System.Linq.Expressions.Expression
IL_008a: stloc.0
IL_008b: ldloc.0
IL_008c: ldc.i4.0
IL_008d: ldarg.0
IL_008e: box ExpressionTrees
IL_0093: ldtoken ExpressionTrees
IL_0098: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_009d: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00a2: stelem.ref
IL_00a3: ldloc.0
IL_00a4: ldc.i4.1
IL_00a5: ldtoken method instance void ExpressionTrees::.ctor()
IL_00aa: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00af: castclass [mscorlib]System.Reflection.ConstructorInfo
IL_00b4: ldc.i4.0
IL_00b5: newarr [System.Core]System.Linq.Expressions.Expression
IL_00ba: call class [System.Core]System.Linq.Expressions.NewExpression [System.Core]System.Linq.Expressions.Expression::New(class [mscorlib]System.Reflection.ConstructorInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_00c7: stelem.ref
IL_00c8: ldloc.0
IL_00c9: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_00bf: stelem.ref
IL_00c0: ldloc.0
IL_00c1: 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_00ce: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_00d3: ldc.i4.0
IL_00d4: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00d9: 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_00c6: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_00cb: ldc.i4.0
IL_00cc: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00d1: 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_00de: call object ExpressionTrees::ToCode<bool>(object,
IL_00d6: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_00e3: pop
IL_00e4: call object ExpressionTrees::X()
IL_00e9: ldarg.0
IL_00ea: box ExpressionTrees
IL_00ef: ldtoken ExpressionTrees
IL_00f4: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f9: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00fe: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_0103: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0108: castclass [mscorlib]System.Reflection.MethodInfo
IL_010d: ldc.i4.1
IL_010e: newarr [System.Core]System.Linq.Expressions.Expression
IL_0113: stloc.0
IL_0114: ldloc.0
IL_0115: ldc.i4.0
IL_0116: ldarg.0
IL_0117: box ExpressionTrees
IL_011c: ldtoken ExpressionTrees
IL_0121: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0126: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_012b: stelem.ref
IL_012c: ldloc.0
IL_012d: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_00db: pop
IL_00dc: call object ExpressionTrees::X()
IL_00e1: ldarg.0
IL_00e2: box ExpressionTrees
IL_00e7: ldtoken ExpressionTrees
IL_00ec: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f1: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00f6: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_00fb: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0100: castclass [mscorlib]System.Reflection.MethodInfo
IL_0105: ldc.i4.1
IL_0106: newarr [System.Core]System.Linq.Expressions.Expression
IL_010b: stloc.0
IL_010c: ldloc.0
IL_010d: ldc.i4.0
IL_010e: ldarg.0
IL_010f: box ExpressionTrees
IL_0114: ldtoken ExpressionTrees
IL_0119: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_011e: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0123: stelem.ref
IL_0124: ldloc.0
IL_0125: 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_0132: ldarg.0
IL_0133: box ExpressionTrees
IL_0138: ldtoken ExpressionTrees
IL_013d: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0142: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0147: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_014c: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0151: castclass [mscorlib]System.Reflection.MethodInfo
IL_0156: ldc.i4.1
IL_0157: newarr [System.Core]System.Linq.Expressions.Expression
IL_015c: stloc.0
IL_015d: ldloc.0
IL_015e: ldc.i4.0
IL_015f: ldnull
IL_0160: box ExpressionTrees
IL_0165: ldtoken ExpressionTrees
IL_016a: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_016f: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0174: stelem.ref
IL_0175: ldloc.0
IL_0176: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_012a: ldarg.0
IL_012b: box ExpressionTrees
IL_0130: ldtoken ExpressionTrees
IL_0135: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_013a: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_013f: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_0144: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0149: castclass [mscorlib]System.Reflection.MethodInfo
IL_014e: ldc.i4.1
IL_014f: newarr [System.Core]System.Linq.Expressions.Expression
IL_0154: stloc.0
IL_0155: ldloc.0
IL_0156: ldc.i4.0
IL_0157: ldnull
IL_0158: box ExpressionTrees
IL_015d: ldtoken ExpressionTrees
IL_0162: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0167: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_016c: stelem.ref
IL_016d: ldloc.0
IL_016e: 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_017b: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_0180: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::AndAlso(class [System.Core]System.Linq.Expressions.Expression,
IL_0173: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_0178: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::AndAlso(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression)
IL_0185: ldc.i4.0
IL_0186: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_018b: 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_017d: ldc.i4.0
IL_017e: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0183: 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_0190: call object ExpressionTrees::ToCode<bool>(object,
IL_0188: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0195: pop
IL_0196: ret
IL_018d: pop
IL_018e: ret
} // end of method ExpressionTrees::DoAssert
.method private hidebysig instance int32
C() cil managed
{
// Code size 14 (0xe)
.maxstack 2
.locals init (int32 V_0)
// Code size 7 (0x7)
.maxstack 8
IL_0000: nop
IL_0001: ldarg.0
IL_0002: ldfld int32 ExpressionTrees::'field'
IL_0007: ldc.i4.5
IL_0008: add
IL_0009: stloc.0
IL_000a: br.s IL_000c
IL_000c: ldloc.0
IL_000d: ret
IL_0001: newobj instance void [mscorlib]System.NotImplementedException::.ctor()
IL_0006: throw
} // end of method ExpressionTrees::C
.method private hidebysig instance bool
MyEquals(class ExpressionTrees other) cil managed
{
// Code size 27 (0x1b)
.maxstack 2
.locals init (bool V_0)
// Code size 7 (0x7)
.maxstack 8
IL_0000: nop
IL_0001: ldarg.1
IL_0002: brfalse.s IL_0014
IL_0004: ldarg.0
IL_0005: ldfld int32 ExpressionTrees::'field'
IL_000a: ldarg.1
IL_000b: ldfld int32 ExpressionTrees::'field'
IL_0010: ceq
IL_0012: br.s IL_0015
IL_0014: ldc.i4.0
IL_0015: nop
IL_0016: stloc.0
IL_0017: br.s IL_0019
IL_0019: ldloc.0
IL_001a: ret
IL_0001: newobj instance void [mscorlib]System.NotImplementedException::.ctor()
IL_0006: throw
} // end of method ExpressionTrees::MyEquals
.method public hidebysig instance void
MethodGroupAsExtensionMethod() cil managed
{
// Code size 273 (0x111)
// Code size 288 (0x120)
.maxstack 10
.locals init (class [System.Core]System.Linq.Expressions.Expression[] V_0,
class [System.Core]System.Linq.Expressions.Expression[] V_1)
@ -2405,23 +2378,27 @@ @@ -2405,23 +2378,27 @@
IL_00e3: ldloc.1
IL_00e4: call class [System.Core]System.Linq.Expressions.NewArrayExpression [System.Core]System.Linq.Expressions.Expression::NewArrayInit(class [mscorlib]System.Type,
class [System.Core]System.Linq.Expressions.Expression[])
IL_00e9: stelem.ref
IL_00ea: ldloc.0
IL_00eb: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_00e9: ldtoken class [mscorlib]System.Collections.Generic.IEnumerable`1<int32>
IL_00ee: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f3: 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_00f8: stelem.ref
IL_00f9: ldloc.0
IL_00fa: 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_00f0: ldtoken class [mscorlib]System.Func`1<bool>
IL_00f5: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00fa: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression,
IL_00ff: ldtoken class [mscorlib]System.Func`1<bool>
IL_0104: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0109: 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_00ff: ldc.i4.0
IL_0100: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0105: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<class [mscorlib]System.Func`1<bool>>>(class [System.Core]System.Linq.Expressions.Expression,
IL_010e: ldc.i4.0
IL_010f: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0114: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<class [mscorlib]System.Func`1<bool>>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_010a: call object ExpressionTrees::ToCode<class [mscorlib]System.Func`1<bool>>(object,
IL_0119: call object ExpressionTrees::ToCode<class [mscorlib]System.Func`1<bool>>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_010f: pop
IL_0110: ret
IL_011e: pop
IL_011f: ret
} // end of method ExpressionTrees::MethodGroupAsExtensionMethod
.method public hidebysig instance void

300
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 '52ioesty'
.assembly mav11ctu
{
.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 '52ioesty.dll'
// MVID: {9B3D89BE-AD40-44EF-A532-1D94E4515C78}
.module mav11ctu.dll
// MVID: {A57EFB8D-913F-4E31-91C8-80C6D2206F2E}
.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: 0x05050000
// Image base: 0x03610000
// =============== CLASS MEMBERS DECLARATION ===================
@ -2081,187 +2081,171 @@ @@ -2081,187 +2081,171 @@
.method public hidebysig instance void
DoAssert() cil managed
{
// Code size 406 (0x196)
// Code size 398 (0x18e)
.maxstack 8
.locals init (class [System.Core]System.Linq.Expressions.Expression[] V_0,
class [System.Core]System.Linq.Expressions.Expression[] V_1,
class [System.Core]System.Linq.Expressions.Expression[] V_2)
IL_0000: ldarg.0
IL_0001: ldc.i4.s 37
IL_0003: stfld int32 ExpressionTrees::'field'
IL_0008: call object ExpressionTrees::X()
IL_000d: ldarg.0
IL_000e: box ExpressionTrees
IL_0013: ldtoken ExpressionTrees
IL_0018: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_001d: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
IL_0000: call object ExpressionTrees::X()
IL_0005: ldarg.0
IL_0006: box ExpressionTrees
IL_000b: ldtoken ExpressionTrees
IL_0010: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0015: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0022: ldtoken field int32 ExpressionTrees::'field'
IL_0027: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_002c: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
IL_001a: ldtoken field int32 ExpressionTrees::'field'
IL_001f: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_0024: 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_0031: ldarg.0
IL_0032: box ExpressionTrees
IL_0037: ldtoken ExpressionTrees
IL_003c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0041: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0046: ldtoken method instance int32 ExpressionTrees::C()
IL_004b: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0050: castclass [mscorlib]System.Reflection.MethodInfo
IL_0055: ldc.i4.0
IL_0056: newarr [System.Core]System.Linq.Expressions.Expression
IL_005b: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_0029: ldarg.0
IL_002a: box ExpressionTrees
IL_002f: ldtoken ExpressionTrees
IL_0034: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0039: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_003e: ldtoken method instance int32 ExpressionTrees::C()
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: ldc.i4.0
IL_004e: newarr [System.Core]System.Linq.Expressions.Expression
IL_0053: 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_0060: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::NotEqual(class [System.Core]System.Linq.Expressions.Expression,
IL_0058: 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_0065: ldc.i4.0
IL_0066: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_006b: 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_005d: ldc.i4.0
IL_005e: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0063: 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_0070: call object ExpressionTrees::ToCode<bool>(object,
IL_0068: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0075: pop
IL_0076: call object ExpressionTrees::X()
IL_007b: ldnull
IL_007c: ldtoken method bool [mscorlib]System.Object::ReferenceEquals(object,
IL_006d: pop
IL_006e: call object ExpressionTrees::X()
IL_0073: ldnull
IL_0074: ldtoken method bool [mscorlib]System.Object::ReferenceEquals(object,
object)
IL_0081: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0086: castclass [mscorlib]System.Reflection.MethodInfo
IL_008b: ldc.i4.2
IL_008c: newarr [System.Core]System.Linq.Expressions.Expression
IL_0091: stloc.0
IL_0092: ldloc.0
IL_0093: ldc.i4.0
IL_0094: ldarg.0
IL_0095: box ExpressionTrees
IL_009a: ldtoken ExpressionTrees
IL_009f: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00a4: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00a9: stelem.ref
IL_00aa: ldloc.0
IL_00ab: ldc.i4.1
IL_00ac: ldtoken method instance void ExpressionTrees::.ctor()
IL_00b1: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00b6: castclass [mscorlib]System.Reflection.ConstructorInfo
IL_00bb: ldc.i4.0
IL_00bc: newarr [System.Core]System.Linq.Expressions.Expression
IL_00c1: call class [System.Core]System.Linq.Expressions.NewExpression [System.Core]System.Linq.Expressions.Expression::New(class [mscorlib]System.Reflection.ConstructorInfo,
IL_0079: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_007e: castclass [mscorlib]System.Reflection.MethodInfo
IL_0083: ldc.i4.2
IL_0084: newarr [System.Core]System.Linq.Expressions.Expression
IL_0089: stloc.0
IL_008a: ldloc.0
IL_008b: ldc.i4.0
IL_008c: ldarg.0
IL_008d: box ExpressionTrees
IL_0092: ldtoken ExpressionTrees
IL_0097: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_009c: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00a1: stelem.ref
IL_00a2: ldloc.0
IL_00a3: ldc.i4.1
IL_00a4: ldtoken method instance void ExpressionTrees::.ctor()
IL_00a9: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00ae: castclass [mscorlib]System.Reflection.ConstructorInfo
IL_00b3: ldc.i4.0
IL_00b4: newarr [System.Core]System.Linq.Expressions.Expression
IL_00b9: call class [System.Core]System.Linq.Expressions.NewExpression [System.Core]System.Linq.Expressions.Expression::New(class [mscorlib]System.Reflection.ConstructorInfo,
class [System.Core]System.Linq.Expressions.Expression[])
IL_00c6: stelem.ref
IL_00c7: ldloc.0
IL_00c8: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_00be: stelem.ref
IL_00bf: ldloc.0
IL_00c0: 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_00cd: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_00d2: ldc.i4.0
IL_00d3: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00d8: 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_00c5: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_00ca: ldc.i4.0
IL_00cb: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00d0: 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_00dd: call object ExpressionTrees::ToCode<bool>(object,
IL_00d5: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_00e2: pop
IL_00e3: call object ExpressionTrees::X()
IL_00e8: ldarg.0
IL_00e9: box ExpressionTrees
IL_00ee: ldtoken ExpressionTrees
IL_00f3: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f8: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00fd: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_0102: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0107: castclass [mscorlib]System.Reflection.MethodInfo
IL_010c: ldc.i4.1
IL_010d: newarr [System.Core]System.Linq.Expressions.Expression
IL_0112: stloc.1
IL_0113: ldloc.1
IL_0114: ldc.i4.0
IL_0115: ldarg.0
IL_0116: box ExpressionTrees
IL_011b: ldtoken ExpressionTrees
IL_0120: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0125: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_012a: stelem.ref
IL_012b: ldloc.1
IL_012c: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_00da: pop
IL_00db: call object ExpressionTrees::X()
IL_00e0: ldarg.0
IL_00e1: box ExpressionTrees
IL_00e6: ldtoken ExpressionTrees
IL_00eb: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f0: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00f5: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_00fa: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00ff: castclass [mscorlib]System.Reflection.MethodInfo
IL_0104: ldc.i4.1
IL_0105: newarr [System.Core]System.Linq.Expressions.Expression
IL_010a: stloc.1
IL_010b: ldloc.1
IL_010c: ldc.i4.0
IL_010d: ldarg.0
IL_010e: box ExpressionTrees
IL_0113: ldtoken ExpressionTrees
IL_0118: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_011d: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0122: stelem.ref
IL_0123: ldloc.1
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_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::MyEquals(class ExpressionTrees)
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.2
IL_015c: ldloc.2
IL_015d: ldc.i4.0
IL_015e: ldnull
IL_015f: box ExpressionTrees
IL_0164: ldtoken ExpressionTrees
IL_0169: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_016e: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0173: stelem.ref
IL_0174: ldloc.2
IL_0175: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_0129: ldarg.0
IL_012a: box ExpressionTrees
IL_012f: ldtoken ExpressionTrees
IL_0134: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0139: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_013e: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_0143: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0148: castclass [mscorlib]System.Reflection.MethodInfo
IL_014d: ldc.i4.1
IL_014e: newarr [System.Core]System.Linq.Expressions.Expression
IL_0153: stloc.2
IL_0154: ldloc.2
IL_0155: ldc.i4.0
IL_0156: ldnull
IL_0157: box ExpressionTrees
IL_015c: ldtoken ExpressionTrees
IL_0161: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0166: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_016b: stelem.ref
IL_016c: ldloc.2
IL_016d: 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_017a: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_017f: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::AndAlso(class [System.Core]System.Linq.Expressions.Expression,
IL_0172: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_0177: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::AndAlso(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression)
IL_0184: ldc.i4.0
IL_0185: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_018a: 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_017c: ldc.i4.0
IL_017d: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0182: 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_018f: call object ExpressionTrees::ToCode<bool>(object,
IL_0187: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0194: pop
IL_0195: ret
IL_018c: pop
IL_018d: ret
} // end of method ExpressionTrees::DoAssert
.method private hidebysig instance int32
C() cil managed
{
// Code size 9 (0x9)
// Code size 6 (0x6)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldfld int32 ExpressionTrees::'field'
IL_0006: ldc.i4.5
IL_0007: add
IL_0008: ret
IL_0000: newobj instance void [mscorlib]System.NotImplementedException::.ctor()
IL_0005: throw
} // end of method ExpressionTrees::C
.method private hidebysig instance bool
MyEquals(class ExpressionTrees other) cil managed
{
// Code size 20 (0x14)
// Code size 6 (0x6)
.maxstack 8
IL_0000: ldarg.1
IL_0001: brfalse.s IL_0012
IL_0003: ldarg.0
IL_0004: ldfld int32 ExpressionTrees::'field'
IL_0009: ldarg.1
IL_000a: ldfld int32 ExpressionTrees::'field'
IL_000f: ceq
IL_0011: ret
IL_0012: ldc.i4.0
IL_0013: ret
IL_0000: newobj instance void [mscorlib]System.NotImplementedException::.ctor()
IL_0005: throw
} // end of method ExpressionTrees::MyEquals
.method public hidebysig instance void
MethodGroupAsExtensionMethod() cil managed
{
// Code size 272 (0x110)
// Code size 287 (0x11f)
.maxstack 10
.locals init (class [System.Core]System.Linq.Expressions.Expression[] V_0,
class [System.Core]System.Linq.Expressions.Expression[] V_1)
@ -2337,23 +2321,27 @@ @@ -2337,23 +2321,27 @@
IL_00e2: ldloc.1
IL_00e3: call class [System.Core]System.Linq.Expressions.NewArrayExpression [System.Core]System.Linq.Expressions.Expression::NewArrayInit(class [mscorlib]System.Type,
class [System.Core]System.Linq.Expressions.Expression[])
IL_00e8: stelem.ref
IL_00e9: ldloc.0
IL_00ea: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_00e8: ldtoken class [mscorlib]System.Collections.Generic.IEnumerable`1<int32>
IL_00ed: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f2: 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_00f7: stelem.ref
IL_00f8: ldloc.0
IL_00f9: 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_00ef: ldtoken class [mscorlib]System.Func`1<bool>
IL_00f4: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f9: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression,
IL_00fe: ldtoken class [mscorlib]System.Func`1<bool>
IL_0103: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0108: 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_00fe: ldc.i4.0
IL_00ff: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0104: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<class [mscorlib]System.Func`1<bool>>>(class [System.Core]System.Linq.Expressions.Expression,
IL_010d: ldc.i4.0
IL_010e: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0113: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<class [mscorlib]System.Func`1<bool>>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_0109: call object ExpressionTrees::ToCode<class [mscorlib]System.Func`1<bool>>(object,
IL_0118: call object ExpressionTrees::ToCode<class [mscorlib]System.Func`1<bool>>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_010e: pop
IL_010f: ret
IL_011d: pop
IL_011e: ret
} // end of method ExpressionTrees::MethodGroupAsExtensionMethod
.method public hidebysig instance void

258
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: {011EC1DC-4E6D-41D3-A477-6AFAB3E4853A}
// MVID: {D518E89D-9CFD-4B4B-A974-EACAB7B2D1C7}
.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: 0x04DC0000
// Image base: 0x012D0000
// =============== CLASS MEMBERS DECLARATION ===================
@ -2414,167 +2414,151 @@ @@ -2414,167 +2414,151 @@
.method public hidebysig instance void
DoAssert() cil managed
{
// Code size 354 (0x162)
// Code size 346 (0x15a)
.maxstack 9
IL_0000: ldarg.0
IL_0001: ldc.i4.s 37
IL_0003: stfld int32 ExpressionTrees::'field'
IL_0008: call object ExpressionTrees::X()
IL_000d: ldarg.0
IL_000e: ldtoken ExpressionTrees
IL_0013: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0018: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
IL_0000: call object ExpressionTrees::X()
IL_0005: ldarg.0
IL_0006: ldtoken ExpressionTrees
IL_000b: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0010: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_001d: ldtoken field int32 ExpressionTrees::'field'
IL_0022: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_0027: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
IL_0015: ldtoken field int32 ExpressionTrees::'field'
IL_001a: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_001f: 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_002c: ldarg.0
IL_002d: ldtoken ExpressionTrees
IL_0032: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0037: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_003c: ldtoken method instance int32 ExpressionTrees::C()
IL_0041: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0046: castclass [mscorlib]System.Reflection.MethodInfo
IL_004b: ldc.i4.0
IL_004c: newarr [System.Core]System.Linq.Expressions.Expression
IL_0051: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_0024: ldarg.0
IL_0025: ldtoken ExpressionTrees
IL_002a: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_002f: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0034: ldtoken method instance int32 ExpressionTrees::C()
IL_0039: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_003e: castclass [mscorlib]System.Reflection.MethodInfo
IL_0043: ldc.i4.0
IL_0044: newarr [System.Core]System.Linq.Expressions.Expression
IL_0049: 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_0056: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::NotEqual(class [System.Core]System.Linq.Expressions.Expression,
IL_004e: 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_005b: ldc.i4.0
IL_005c: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0061: 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_0053: ldc.i4.0
IL_0054: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0059: 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_0066: call object ExpressionTrees::ToCode<bool>(object,
IL_005e: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_006b: pop
IL_006c: call object ExpressionTrees::X()
IL_0071: ldnull
IL_0072: ldtoken method bool [mscorlib]System.Object::ReferenceEquals(object,
IL_0063: pop
IL_0064: call object ExpressionTrees::X()
IL_0069: ldnull
IL_006a: ldtoken method bool [mscorlib]System.Object::ReferenceEquals(object,
object)
IL_0077: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_007c: castclass [mscorlib]System.Reflection.MethodInfo
IL_0081: ldc.i4.2
IL_0082: newarr [System.Core]System.Linq.Expressions.Expression
IL_0087: dup
IL_0088: ldc.i4.0
IL_0089: ldarg.0
IL_008a: ldtoken ExpressionTrees
IL_008f: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0094: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0099: stelem.ref
IL_009a: dup
IL_009b: ldc.i4.1
IL_009c: ldtoken ExpressionTrees
IL_00a1: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00a6: call class [System.Core]System.Linq.Expressions.NewExpression [System.Core]System.Linq.Expressions.Expression::New(class [mscorlib]System.Type)
IL_00ab: stelem.ref
IL_00ac: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_006f: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0074: castclass [mscorlib]System.Reflection.MethodInfo
IL_0079: ldc.i4.2
IL_007a: newarr [System.Core]System.Linq.Expressions.Expression
IL_007f: dup
IL_0080: ldc.i4.0
IL_0081: ldarg.0
IL_0082: ldtoken ExpressionTrees
IL_0087: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_008c: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0091: stelem.ref
IL_0092: dup
IL_0093: ldc.i4.1
IL_0094: ldtoken ExpressionTrees
IL_0099: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_009e: call class [System.Core]System.Linq.Expressions.NewExpression [System.Core]System.Linq.Expressions.Expression::New(class [mscorlib]System.Type)
IL_00a3: stelem.ref
IL_00a4: 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_00b1: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_00b6: ldc.i4.0
IL_00b7: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00bc: 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_00a9: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_00ae: ldc.i4.0
IL_00af: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00b4: 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_00c1: call object ExpressionTrees::ToCode<bool>(object,
IL_00b9: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_00c6: pop
IL_00c7: call object ExpressionTrees::X()
IL_00cc: ldarg.0
IL_00cd: ldtoken ExpressionTrees
IL_00d2: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00d7: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
IL_00be: pop
IL_00bf: call object ExpressionTrees::X()
IL_00c4: ldarg.0
IL_00c5: ldtoken ExpressionTrees
IL_00ca: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00cf: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00dc: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_00e1: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00e6: castclass [mscorlib]System.Reflection.MethodInfo
IL_00eb: ldc.i4.1
IL_00ec: newarr [System.Core]System.Linq.Expressions.Expression
IL_00f1: dup
IL_00f2: ldc.i4.0
IL_00f3: ldarg.0
IL_00f4: ldtoken ExpressionTrees
IL_00f9: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00fe: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0103: stelem.ref
IL_0104: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_00d4: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_00d9: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00de: castclass [mscorlib]System.Reflection.MethodInfo
IL_00e3: ldc.i4.1
IL_00e4: newarr [System.Core]System.Linq.Expressions.Expression
IL_00e9: dup
IL_00ea: ldc.i4.0
IL_00eb: ldarg.0
IL_00ec: ldtoken ExpressionTrees
IL_00f1: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00f6: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00fb: stelem.ref
IL_00fc: 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_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::MyEquals(class ExpressionTrees)
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: ldnull
IL_0131: ldtoken ExpressionTrees
IL_0136: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_013b: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
IL_0101: ldarg.0
IL_0102: ldtoken ExpressionTrees
IL_0107: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_010c: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0111: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_0116: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_011b: castclass [mscorlib]System.Reflection.MethodInfo
IL_0120: ldc.i4.1
IL_0121: newarr [System.Core]System.Linq.Expressions.Expression
IL_0126: dup
IL_0127: ldc.i4.0
IL_0128: ldnull
IL_0129: ldtoken ExpressionTrees
IL_012e: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0133: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0140: stelem.ref
IL_0141: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_0138: stelem.ref
IL_0139: 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_0146: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_014b: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::AndAlso(class [System.Core]System.Linq.Expressions.Expression,
IL_013e: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_0143: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::AndAlso(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression)
IL_0150: ldc.i4.0
IL_0151: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0156: 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_0148: ldc.i4.0
IL_0149: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_014e: 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_015b: call object ExpressionTrees::ToCode<bool>(object,
IL_0153: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0160: pop
IL_0161: ret
IL_0158: pop
IL_0159: ret
} // end of method ExpressionTrees::DoAssert
.method private hidebysig instance int32
C() cil managed
{
// Code size 9 (0x9)
// Code size 6 (0x6)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldfld int32 ExpressionTrees::'field'
IL_0006: ldc.i4.5
IL_0007: add
IL_0008: ret
IL_0000: newobj instance void [mscorlib]System.NotImplementedException::.ctor()
IL_0005: throw
} // end of method ExpressionTrees::C
.method private hidebysig instance bool
MyEquals(class ExpressionTrees other) cil managed
{
// Code size 20 (0x14)
// Code size 6 (0x6)
.maxstack 8
IL_0000: ldarg.1
IL_0001: brfalse.s IL_0012
IL_0003: ldarg.0
IL_0004: ldfld int32 ExpressionTrees::'field'
IL_0009: ldarg.1
IL_000a: ldfld int32 ExpressionTrees::'field'
IL_000f: ceq
IL_0011: ret
IL_0012: ldc.i4.0
IL_0013: ret
IL_0000: newobj instance void [mscorlib]System.NotImplementedException::.ctor()
IL_0005: throw
} // end of method ExpressionTrees::MyEquals
.method public hidebysig instance void
MethodGroupAsExtensionMethod() cil managed
{
// Code size 258 (0x102)
// Code size 273 (0x111)
.maxstack 12
IL_0000: call object ExpressionTrees::X()
IL_0005: ldtoken method bool [System.Core]System.Linq.Enumerable::Any<int32>(class [mscorlib]System.Collections.Generic.IEnumerable`1<!!0>)
@ -2643,22 +2627,26 @@ @@ -2643,22 +2627,26 @@
IL_00d5: stelem.ref
IL_00d6: call class [System.Core]System.Linq.Expressions.NewArrayExpression [System.Core]System.Linq.Expressions.Expression::NewArrayInit(class [mscorlib]System.Type,
class [System.Core]System.Linq.Expressions.Expression[])
IL_00db: stelem.ref
IL_00dc: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_00db: ldtoken class [mscorlib]System.Collections.Generic.IEnumerable`1<int32>
IL_00e0: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00e5: 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_00ea: stelem.ref
IL_00eb: 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_00e1: ldtoken class [mscorlib]System.Func`1<bool>
IL_00e6: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00eb: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression,
IL_00f0: ldtoken class [mscorlib]System.Func`1<bool>
IL_00f5: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00fa: 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_00f0: ldc.i4.0
IL_00f1: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00f6: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<class [mscorlib]System.Func`1<bool>>>(class [System.Core]System.Linq.Expressions.Expression,
IL_00ff: ldc.i4.0
IL_0100: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0105: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<class [mscorlib]System.Func`1<bool>>>(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.ParameterExpression[])
IL_00fb: call object ExpressionTrees::ToCode<class [mscorlib]System.Func`1<bool>>(object,
IL_010a: call object ExpressionTrees::ToCode<class [mscorlib]System.Func`1<bool>>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0100: pop
IL_0101: ret
IL_010f: pop
IL_0110: ret
} // end of method ExpressionTrees::MethodGroupAsExtensionMethod
.method public hidebysig instance void

272
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: {8FA0BC83-A8B7-4800-8E3F-0A672A66BCAE}
// MVID: {69A458ED-527F-4C9C-9A7C-CF5C957EC1ED}
.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: 0x00F60000
// Image base: 0x01390000
// =============== CLASS MEMBERS DECLARATION ===================
@ -2483,180 +2483,154 @@ @@ -2483,180 +2483,154 @@
.method public hidebysig instance void
DoAssert() cil managed
{
// Code size 355 (0x163)
// Code size 347 (0x15b)
.maxstack 9
IL_0000: nop
IL_0001: ldarg.0
IL_0002: ldc.i4.s 37
IL_0004: stfld int32 ExpressionTrees::'field'
IL_0009: call object ExpressionTrees::X()
IL_000e: ldarg.0
IL_000f: ldtoken ExpressionTrees
IL_0014: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0019: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
IL_0001: call object ExpressionTrees::X()
IL_0006: ldarg.0
IL_0007: ldtoken ExpressionTrees
IL_000c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0011: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_001e: ldtoken field int32 ExpressionTrees::'field'
IL_0023: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_0028: call class [System.Core]System.Linq.Expressions.MemberExpression [System.Core]System.Linq.Expressions.Expression::Field(class [System.Core]System.Linq.Expressions.Expression,
IL_0016: ldtoken field int32 ExpressionTrees::'field'
IL_001b: call class [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle(valuetype [mscorlib]System.RuntimeFieldHandle)
IL_0020: 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_002d: ldarg.0
IL_002e: ldtoken ExpressionTrees
IL_0033: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0038: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_003d: ldtoken method instance int32 ExpressionTrees::C()
IL_0042: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0047: castclass [mscorlib]System.Reflection.MethodInfo
IL_004c: ldc.i4.0
IL_004d: newarr [System.Core]System.Linq.Expressions.Expression
IL_0052: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_0025: ldarg.0
IL_0026: ldtoken ExpressionTrees
IL_002b: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0030: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0035: ldtoken method instance int32 ExpressionTrees::C()
IL_003a: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_003f: castclass [mscorlib]System.Reflection.MethodInfo
IL_0044: ldc.i4.0
IL_0045: newarr [System.Core]System.Linq.Expressions.Expression
IL_004a: 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_0057: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::NotEqual(class [System.Core]System.Linq.Expressions.Expression,
IL_004f: 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_005c: ldc.i4.0
IL_005d: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0062: 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_0054: ldc.i4.0
IL_0055: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_005a: 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_0067: call object ExpressionTrees::ToCode<bool>(object,
IL_005f: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_006c: pop
IL_006d: call object ExpressionTrees::X()
IL_0072: ldnull
IL_0073: ldtoken method bool [mscorlib]System.Object::ReferenceEquals(object,
IL_0064: pop
IL_0065: call object ExpressionTrees::X()
IL_006a: ldnull
IL_006b: ldtoken method bool [mscorlib]System.Object::ReferenceEquals(object,
object)
IL_0078: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_007d: castclass [mscorlib]System.Reflection.MethodInfo
IL_0082: ldc.i4.2
IL_0083: newarr [System.Core]System.Linq.Expressions.Expression
IL_0088: dup
IL_0089: ldc.i4.0
IL_008a: ldarg.0
IL_008b: ldtoken ExpressionTrees
IL_0090: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0095: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_009a: stelem.ref
IL_009b: dup
IL_009c: ldc.i4.1
IL_009d: ldtoken ExpressionTrees
IL_00a2: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00a7: call class [System.Core]System.Linq.Expressions.NewExpression [System.Core]System.Linq.Expressions.Expression::New(class [mscorlib]System.Type)
IL_00ac: stelem.ref
IL_00ad: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_0070: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_0075: castclass [mscorlib]System.Reflection.MethodInfo
IL_007a: ldc.i4.2
IL_007b: newarr [System.Core]System.Linq.Expressions.Expression
IL_0080: dup
IL_0081: ldc.i4.0
IL_0082: ldarg.0
IL_0083: ldtoken ExpressionTrees
IL_0088: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_008d: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0092: stelem.ref
IL_0093: dup
IL_0094: ldc.i4.1
IL_0095: ldtoken ExpressionTrees
IL_009a: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_009f: call class [System.Core]System.Linq.Expressions.NewExpression [System.Core]System.Linq.Expressions.Expression::New(class [mscorlib]System.Type)
IL_00a4: stelem.ref
IL_00a5: 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_00b2: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_00b7: ldc.i4.0
IL_00b8: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00bd: 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_00aa: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_00af: ldc.i4.0
IL_00b0: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_00b5: 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_00c2: call object ExpressionTrees::ToCode<bool>(object,
IL_00ba: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_00c7: pop
IL_00c8: call object ExpressionTrees::X()
IL_00cd: ldarg.0
IL_00ce: ldtoken ExpressionTrees
IL_00d3: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00d8: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
IL_00bf: pop
IL_00c0: call object ExpressionTrees::X()
IL_00c5: ldarg.0
IL_00c6: ldtoken ExpressionTrees
IL_00cb: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00d0: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_00d5: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_00da: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00df: castclass [mscorlib]System.Reflection.MethodInfo
IL_00e4: ldc.i4.1
IL_00e5: newarr [System.Core]System.Linq.Expressions.Expression
IL_00ea: dup
IL_00eb: ldc.i4.0
IL_00ec: ldarg.0
IL_00ed: ldtoken ExpressionTrees
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_00dd: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_00e2: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_00e7: castclass [mscorlib]System.Reflection.MethodInfo
IL_00ec: ldc.i4.1
IL_00ed: newarr [System.Core]System.Linq.Expressions.Expression
IL_00f2: dup
IL_00f3: ldc.i4.0
IL_00f4: ldarg.0
IL_00f5: ldtoken ExpressionTrees
IL_00fa: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00ff: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0104: stelem.ref
IL_0105: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_00fc: stelem.ref
IL_00fd: 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_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::MyEquals(class ExpressionTrees)
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: ldnull
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,
IL_0102: ldarg.0
IL_0103: ldtoken ExpressionTrees
IL_0108: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_010d: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0112: ldtoken method instance bool ExpressionTrees::MyEquals(class ExpressionTrees)
IL_0117: call class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype [mscorlib]System.RuntimeMethodHandle)
IL_011c: castclass [mscorlib]System.Reflection.MethodInfo
IL_0121: ldc.i4.1
IL_0122: newarr [System.Core]System.Linq.Expressions.Expression
IL_0127: dup
IL_0128: ldc.i4.0
IL_0129: ldnull
IL_012a: ldtoken ExpressionTrees
IL_012f: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_0134: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object,
class [mscorlib]System.Type)
IL_0141: stelem.ref
IL_0142: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_0139: stelem.ref
IL_013a: 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_0147: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_014c: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::AndAlso(class [System.Core]System.Linq.Expressions.Expression,
IL_013f: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Not(class [System.Core]System.Linq.Expressions.Expression)
IL_0144: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::AndAlso(class [System.Core]System.Linq.Expressions.Expression,
class [System.Core]System.Linq.Expressions.Expression)
IL_0151: ldc.i4.0
IL_0152: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0157: 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_0149: ldc.i4.0
IL_014a: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_014f: 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_015c: call object ExpressionTrees::ToCode<bool>(object,
IL_0154: call object ExpressionTrees::ToCode<bool>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0161: pop
IL_0162: ret
IL_0159: pop
IL_015a: ret
} // end of method ExpressionTrees::DoAssert
.method private hidebysig instance int32
C() cil managed
{
// Code size 14 (0xe)
.maxstack 2
.locals init (int32 V_0)
// Code size 7 (0x7)
.maxstack 8
IL_0000: nop
IL_0001: ldarg.0
IL_0002: ldfld int32 ExpressionTrees::'field'
IL_0007: ldc.i4.5
IL_0008: add
IL_0009: stloc.0
IL_000a: br.s IL_000c
IL_000c: ldloc.0
IL_000d: ret
IL_0001: newobj instance void [mscorlib]System.NotImplementedException::.ctor()
IL_0006: throw
} // end of method ExpressionTrees::C
.method private hidebysig instance bool
MyEquals(class ExpressionTrees other) cil managed
{
// Code size 26 (0x1a)
.maxstack 2
.locals init (bool V_0)
// Code size 7 (0x7)
.maxstack 8
IL_0000: nop
IL_0001: ldarg.1
IL_0002: brfalse.s IL_0014
IL_0004: ldarg.0
IL_0005: ldfld int32 ExpressionTrees::'field'
IL_000a: ldarg.1
IL_000b: ldfld int32 ExpressionTrees::'field'
IL_0010: ceq
IL_0012: br.s IL_0015
IL_0014: ldc.i4.0
IL_0015: stloc.0
IL_0016: br.s IL_0018
IL_0018: ldloc.0
IL_0019: ret
IL_0001: newobj instance void [mscorlib]System.NotImplementedException::.ctor()
IL_0006: throw
} // end of method ExpressionTrees::MyEquals
.method public hidebysig instance void
MethodGroupAsExtensionMethod() cil managed
{
// Code size 259 (0x103)
// Code size 274 (0x112)
.maxstack 12
IL_0000: nop
IL_0001: call object ExpressionTrees::X()
@ -2726,22 +2700,26 @@ @@ -2726,22 +2700,26 @@
IL_00d6: stelem.ref
IL_00d7: call class [System.Core]System.Linq.Expressions.NewArrayExpression [System.Core]System.Linq.Expressions.Expression::NewArrayInit(class [mscorlib]System.Type,
class [System.Core]System.Linq.Expressions.Expression[])
IL_00dc: stelem.ref
IL_00dd: call class [System.Core]System.Linq.Expressions.MethodCallExpression [System.Core]System.Linq.Expressions.Expression::Call(class [System.Core]System.Linq.Expressions.Expression,
IL_00dc: ldtoken class [mscorlib]System.Collections.Generic.IEnumerable`1<int32>
IL_00e1: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00e6: 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_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_00e2: ldtoken class [mscorlib]System.Func`1<bool>
IL_00e7: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00ec: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression,
IL_00f1: ldtoken class [mscorlib]System.Func`1<bool>
IL_00f6: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_00fb: 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_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<class [mscorlib]System.Func`1<bool>>>(class [System.Core]System.Linq.Expressions.Expression,
IL_0100: ldc.i4.0
IL_0101: newarr [System.Core]System.Linq.Expressions.ParameterExpression
IL_0106: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [mscorlib]System.Func`1<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<class [mscorlib]System.Func`1<bool>>(object,
IL_010b: call object ExpressionTrees::ToCode<class [mscorlib]System.Func`1<bool>>(object,
class [System.Core]System.Linq.Expressions.Expression`1<class [mscorlib]System.Func`1<!!0>>)
IL_0101: pop
IL_0102: ret
IL_0110: pop
IL_0111: ret
} // end of method ExpressionTrees::MethodGroupAsExtensionMethod
.method public hidebysig instance void

Loading…
Cancel
Save