From 081528ab5260a03c3443cc3d05eafd60b29fc9e6 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 17 Dec 2016 07:38:44 +0100 Subject: [PATCH] fix #772 - Creation of an anonymous array doesn't decompile properly --- .../CSharp/ExpressionBuilder.cs | 22 +- .../Tests/ICSharpCode.Decompiler.Tests.csproj | 1 + .../Tests/PrettyTestRunner.cs | 6 + .../Tests/TestCases/Pretty/AnonymousTypes.cs | 85 ++ .../Tests/TestCases/Pretty/AnonymousTypes.il | 842 ++++++++++++++++++ .../TestCases/Pretty/AnonymousTypes.opt.il | 738 +++++++++++++++ 6 files changed, 1688 insertions(+), 6 deletions(-) create mode 100644 ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.cs create mode 100644 ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.il create mode 100644 ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.opt.il diff --git a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs index f893f37cf..e739a5075 100644 --- a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs @@ -1414,6 +1414,8 @@ namespace ICSharpCode.Decompiler.CSharp } } + readonly static ArraySpecifier[] NoSpecifiers = new ArraySpecifier[0]; + TranslatedExpression TranslateArrayInitializer(Block block) { var stloc = block.Instructions.FirstOrDefault() as StLoc; @@ -1457,19 +1459,27 @@ namespace ICSharpCode.Decompiler.CSharp } } ArraySpecifier[] additionalSpecifiers; - var typeExpression = ConvertType(type); - if (typeExpression is ComposedType) { - additionalSpecifiers = ((ComposedType)typeExpression).ArraySpecifiers.SelectArray(a => (ArraySpecifier)a.Clone()); - typeExpression = ((ComposedType)typeExpression).BaseType.Clone(); + AstType typeExpression; + bool isAnonymouslyTyped = type.ContainsAnonymousType(); + if (isAnonymouslyTyped) { + typeExpression = null; + additionalSpecifiers = new[] { new ArraySpecifier() }; } else { - additionalSpecifiers = new ArraySpecifier[0]; + typeExpression = ConvertType(type); + if (typeExpression is ComposedType) { + additionalSpecifiers = ((ComposedType)typeExpression).ArraySpecifiers.SelectArray(a => (ArraySpecifier)a.Clone()); + typeExpression = ((ComposedType)typeExpression).BaseType.Clone(); + } else { + additionalSpecifiers = NoSpecifiers; + } } var expr = new ArrayCreateExpression { Type = typeExpression, Initializer = root }; expr.AdditionalArraySpecifiers.AddRange(additionalSpecifiers); - expr.Arguments.AddRange(newArr.Indices.Select(i => Translate(i).Expression)); + if (!isAnonymouslyTyped) + expr.Arguments.AddRange(newArr.Indices.Select(i => Translate(i).Expression)); return expr.WithILInstruction(block) .WithRR(new ArrayCreateResolveResult(new ArrayType(compilation, type, dimensions), newArr.Indices.Select(i => Translate(i).ResolveResult).ToArray(), elementResolveResults)); } diff --git a/ICSharpCode.Decompiler/Tests/ICSharpCode.Decompiler.Tests.csproj b/ICSharpCode.Decompiler/Tests/ICSharpCode.Decompiler.Tests.csproj index f7f8bc955..c9e5cd4ff 100644 --- a/ICSharpCode.Decompiler/Tests/ICSharpCode.Decompiler.Tests.csproj +++ b/ICSharpCode.Decompiler/Tests/ICSharpCode.Decompiler.Tests.csproj @@ -127,6 +127,7 @@ + diff --git a/ICSharpCode.Decompiler/Tests/PrettyTestRunner.cs b/ICSharpCode.Decompiler/Tests/PrettyTestRunner.cs index fe0a85658..0720476fd 100644 --- a/ICSharpCode.Decompiler/Tests/PrettyTestRunner.cs +++ b/ICSharpCode.Decompiler/Tests/PrettyTestRunner.cs @@ -91,6 +91,12 @@ namespace ICSharpCode.Decompiler.Tests Run(cscOptions: cscOptions); } + [Test] + public void AnonymousTypes([Values(CompilerOptions.None, CompilerOptions.Optimize)] CompilerOptions cscOptions) + { + Run(cscOptions: cscOptions); + } + [Test, Ignore("Not implemented")] public void Async([ValueSource("defaultOptions")] CompilerOptions cscOptions) { diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.cs b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.cs new file mode 100644 index 000000000..4c4d397e5 --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.cs @@ -0,0 +1,85 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System; + +namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty +{ + public class AnonymousTypes + { + private void SimpleTypes() + { + var V_0 = new { + }; + var V_1 = new { + X = 5 + }; + var V_2 = new { + X = 5, + Y = 10 + }; + + Console.WriteLine((object)V_0); + Console.WriteLine(V_1.X); + Console.WriteLine(V_2.Y + V_2.X); + } + + private void SimpleArray() + { + var V_0 = new[] { + new { + X = 5, + Y = 2, + Z = -1 + }, + new { + X = 3, + Y = 6, + Z = -6 + } + }; + + Console.WriteLine(V_0[0].X); + Console.WriteLine(V_0[1].X); + } + + private void JaggedArray() + { + var V_0 = new[] { + new { + X = 5, + Y = 2, + Z = -1 + }, + new { + X = 3, + Y = 6, + Z = -6 + } + }; + var V_1 = new[] { + V_0, + V_0 + }; + + Console.WriteLine(V_0[0].X); + Console.WriteLine(V_0[1].X); + Console.WriteLine(V_1.Length); + } + } +} diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.il new file mode 100644 index 000000000..6da1db0e0 --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.il @@ -0,0 +1,842 @@ + +// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17929 +// Copyright (c) Microsoft Corporation. All rights reserved. + + + +// Metadata version: v4.0.30319 +.assembly extern mscorlib +{ + .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. + .ver 4:0:0:0 +} +.assembly tn2texe4 +{ + .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 + 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows. + .permissionset reqmin + = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}} + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.module tn2texe4.dll +// MVID: {D4BB5234-2960-41DF-8B02-A927E4CEA1D0} +.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: 0x00860000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.AnonymousTypes + extends [mscorlib]System.Object +{ + .method private hidebysig instance void + SimpleTypes() cil managed + { + // Code size 62 (0x3e) + .maxstack 2 + .locals init (class '<>f__AnonymousType0' V_0, + class '<>f__AnonymousType1`1' V_1, + class '<>f__AnonymousType2`2' V_2) + IL_0000: nop + IL_0001: newobj instance void '<>f__AnonymousType0'::.ctor() + IL_0006: stloc.0 + IL_0007: ldc.i4.5 + IL_0008: newobj instance void class '<>f__AnonymousType1`1'::.ctor(!0) + IL_000d: stloc.1 + IL_000e: ldc.i4.5 + IL_000f: ldc.i4.s 10 + IL_0011: newobj instance void class '<>f__AnonymousType2`2'::.ctor(!0, + !1) + IL_0016: stloc.2 + IL_0017: ldloc.0 + IL_0018: call void [mscorlib]System.Console::WriteLine(object) + IL_001d: nop + IL_001e: ldloc.1 + IL_001f: callvirt instance !0 class '<>f__AnonymousType1`1'::get_X() + IL_0024: call void [mscorlib]System.Console::WriteLine(int32) + IL_0029: nop + IL_002a: ldloc.2 + IL_002b: callvirt instance !1 class '<>f__AnonymousType2`2'::get_Y() + IL_0030: ldloc.2 + IL_0031: callvirt instance !0 class '<>f__AnonymousType2`2'::get_X() + IL_0036: add + IL_0037: call void [mscorlib]System.Console::WriteLine(int32) + IL_003c: nop + IL_003d: ret + } // end of method AnonymousTypes::SimpleTypes + + .method private hidebysig instance void + SimpleArray() cil managed + { + // Code size 62 (0x3e) + .maxstack 5 + .locals init (class '<>f__AnonymousType3`3'[] V_0, + class '<>f__AnonymousType3`3'[] V_1) + IL_0000: nop + IL_0001: ldc.i4.2 + IL_0002: newarr class '<>f__AnonymousType3`3' + IL_0007: stloc.1 + IL_0008: ldloc.1 + IL_0009: ldc.i4.0 + IL_000a: ldc.i4.5 + IL_000b: ldc.i4.2 + IL_000c: ldc.i4.m1 + IL_000d: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0, + !1, + !2) + IL_0012: stelem.ref + IL_0013: ldloc.1 + IL_0014: ldc.i4.1 + IL_0015: ldc.i4.3 + IL_0016: ldc.i4.6 + IL_0017: ldc.i4.s -6 + IL_0019: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0, + !1, + !2) + IL_001e: stelem.ref + IL_001f: ldloc.1 + IL_0020: stloc.0 + IL_0021: ldloc.0 + IL_0022: ldc.i4.0 + IL_0023: ldelem.ref + IL_0024: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X() + IL_0029: call void [mscorlib]System.Console::WriteLine(int32) + IL_002e: nop + IL_002f: ldloc.0 + IL_0030: ldc.i4.1 + IL_0031: ldelem.ref + IL_0032: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X() + IL_0037: call void [mscorlib]System.Console::WriteLine(int32) + IL_003c: nop + IL_003d: ret + } // end of method AnonymousTypes::SimpleArray + + .method private hidebysig instance void + JaggedArray() cil managed + { + // Code size 88 (0x58) + .maxstack 5 + .locals init (class '<>f__AnonymousType3`3'[] V_0, + class '<>f__AnonymousType3`3'[][] V_1, + class '<>f__AnonymousType3`3'[] V_2, + class '<>f__AnonymousType3`3'[][] V_3) + IL_0000: nop + IL_0001: ldc.i4.2 + IL_0002: newarr class '<>f__AnonymousType3`3' + IL_0007: stloc.2 + IL_0008: ldloc.2 + IL_0009: ldc.i4.0 + IL_000a: ldc.i4.5 + IL_000b: ldc.i4.2 + IL_000c: ldc.i4.m1 + IL_000d: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0, + !1, + !2) + IL_0012: stelem.ref + IL_0013: ldloc.2 + IL_0014: ldc.i4.1 + IL_0015: ldc.i4.3 + IL_0016: ldc.i4.6 + IL_0017: ldc.i4.s -6 + IL_0019: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0, + !1, + !2) + IL_001e: stelem.ref + IL_001f: ldloc.2 + IL_0020: stloc.0 + IL_0021: ldc.i4.2 + IL_0022: newarr class '<>f__AnonymousType3`3'[] + IL_0027: stloc.3 + IL_0028: ldloc.3 + IL_0029: ldc.i4.0 + IL_002a: ldloc.0 + IL_002b: stelem.ref + IL_002c: ldloc.3 + IL_002d: ldc.i4.1 + IL_002e: ldloc.0 + IL_002f: stelem.ref + IL_0030: ldloc.3 + IL_0031: stloc.1 + IL_0032: ldloc.0 + IL_0033: ldc.i4.0 + IL_0034: ldelem.ref + IL_0035: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X() + IL_003a: call void [mscorlib]System.Console::WriteLine(int32) + IL_003f: nop + IL_0040: ldloc.0 + IL_0041: ldc.i4.1 + IL_0042: ldelem.ref + IL_0043: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X() + IL_0048: call void [mscorlib]System.Console::WriteLine(int32) + IL_004d: nop + IL_004e: ldloc.1 + IL_004f: ldlen + IL_0050: conv.i4 + IL_0051: call void [mscorlib]System.Console::WriteLine(int32) + IL_0056: nop + IL_0057: ret + } // end of method AnonymousTypes::JaggedArray + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method AnonymousTypes::.ctor + +} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.AnonymousTypes + +.class private auto ansi sealed beforefieldinit '<>f__AnonymousType0' + extends [mscorlib]System.Object +{ + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method '<>f__AnonymousType0'::.ctor + + .method public hidebysig virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 29 (0x1d) + .maxstack 2 + .locals init (class [mscorlib]System.Text.StringBuilder V_0, + string V_1) + IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor() + IL_0005: stloc.0 + IL_0006: ldloc.0 + IL_0007: ldstr "{ }" + IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_0011: pop + IL_0012: ldloc.0 + IL_0013: callvirt instance string [mscorlib]System.Object::ToString() + IL_0018: stloc.1 + IL_0019: br.s IL_001b + + IL_001b: ldloc.1 + IL_001c: ret + } // end of method '<>f__AnonymousType0'::ToString + + .method public hidebysig virtual instance bool + Equals(object 'value') cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 19 (0x13) + .maxstack 2 + .locals init (class '<>f__AnonymousType0' V_0, + bool V_1) + IL_0000: ldarg.1 + IL_0001: isinst '<>f__AnonymousType0' + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: ldnull + IL_0009: ceq + IL_000b: ldc.i4.0 + IL_000c: ceq + IL_000e: stloc.1 + IL_000f: br.s IL_0011 + + IL_0011: ldloc.1 + IL_0012: ret + } // end of method '<>f__AnonymousType0'::Equals + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 8 (0x8) + .maxstack 1 + .locals init (int32 V_0, + int32 V_1) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldloc.0 + IL_0003: stloc.1 + IL_0004: br.s IL_0006 + + IL_0006: ldloc.1 + IL_0007: ret + } // end of method '<>f__AnonymousType0'::GetHashCode + +} // end of class '<>f__AnonymousType0' + +.class private auto ansi sealed beforefieldinit '<>f__AnonymousType1`1'<'j__TPar'> + extends [mscorlib]System.Object +{ + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .field private initonly !'j__TPar' 'i__Field' + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname rtspecialname + instance void .ctor(!'j__TPar' X) cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field' + IL_000d: ret + } // end of method '<>f__AnonymousType1`1'::.ctor + + .method public hidebysig specialname instance !'j__TPar' + get_X() cil managed + { + // Code size 11 (0xb) + .maxstack 1 + .locals init (!'j__TPar' V_0) + IL_0000: ldarg.0 + IL_0001: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field' + IL_0006: stloc.0 + IL_0007: br.s IL_0009 + + IL_0009: ldloc.0 + IL_000a: ret + } // end of method '<>f__AnonymousType1`1'::get_X + + .method public hidebysig virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 59 (0x3b) + .maxstack 2 + .locals init (class [mscorlib]System.Text.StringBuilder V_0, + string V_1) + IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor() + IL_0005: stloc.0 + IL_0006: ldloc.0 + IL_0007: ldstr "{ X = " + IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_0011: pop + IL_0012: ldloc.0 + IL_0013: ldarg.0 + IL_0014: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field' + IL_0019: box !'j__TPar' + IL_001e: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object) + IL_0023: pop + IL_0024: ldloc.0 + IL_0025: ldstr " }" + IL_002a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_002f: pop + IL_0030: ldloc.0 + IL_0031: callvirt instance string [mscorlib]System.Object::ToString() + IL_0036: stloc.1 + IL_0037: br.s IL_0039 + + IL_0039: ldloc.1 + IL_003a: ret + } // end of method '<>f__AnonymousType1`1'::ToString + + .method public hidebysig virtual instance bool + Equals(object 'value') cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 41 (0x29) + .maxstack 3 + .locals init (class '<>f__AnonymousType1`1'j__TPar'> V_0, + bool V_1) + IL_0000: ldarg.1 + IL_0001: isinst class '<>f__AnonymousType1`1'j__TPar'> + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0022 + + IL_000a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_000f: ldarg.0 + IL_0010: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field' + IL_0015: ldloc.0 + IL_0016: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field' + IL_001b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0, + !0) + IL_0020: br.s IL_0023 + + IL_0022: ldc.i4.0 + IL_0023: nop + IL_0024: stloc.1 + IL_0025: br.s IL_0027 + + IL_0027: ldloc.1 + IL_0028: ret + } // end of method '<>f__AnonymousType1`1'::Equals + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 37 (0x25) + .maxstack 3 + .locals init (int32 V_0, + int32 V_1) + IL_0000: ldc.i4 0x12721cd8 + IL_0005: stloc.0 + IL_0006: ldc.i4 0xa5555529 + IL_000b: ldloc.0 + IL_000c: mul + IL_000d: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_0012: ldarg.0 + IL_0013: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field' + IL_0018: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0) + IL_001d: add + IL_001e: stloc.0 + IL_001f: ldloc.0 + IL_0020: stloc.1 + IL_0021: br.s IL_0023 + + IL_0023: ldloc.1 + IL_0024: ret + } // end of method '<>f__AnonymousType1`1'::GetHashCode + + .property instance !'j__TPar' X() + { + .get instance !'j__TPar' '<>f__AnonymousType1`1'::get_X() + } // end of property '<>f__AnonymousType1`1'::X +} // end of class '<>f__AnonymousType1`1' + +.class private auto ansi sealed beforefieldinit '<>f__AnonymousType2`2'<'j__TPar','j__TPar'> + extends [mscorlib]System.Object +{ + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .field private initonly !'j__TPar' 'i__Field' + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field private initonly !'j__TPar' 'i__Field' + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname rtspecialname + instance void .ctor(!'j__TPar' X, + !'j__TPar' Y) cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 21 (0x15) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_000d: ldarg.0 + IL_000e: ldarg.2 + IL_000f: stfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0014: ret + } // end of method '<>f__AnonymousType2`2'::.ctor + + .method public hidebysig specialname instance !'j__TPar' + get_X() cil managed + { + // Code size 11 (0xb) + .maxstack 1 + .locals init (!'j__TPar' V_0) + IL_0000: ldarg.0 + IL_0001: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0006: stloc.0 + IL_0007: br.s IL_0009 + + IL_0009: ldloc.0 + IL_000a: ret + } // end of method '<>f__AnonymousType2`2'::get_X + + .method public hidebysig specialname instance !'j__TPar' + get_Y() cil managed + { + // Code size 11 (0xb) + .maxstack 1 + .locals init (!'j__TPar' V_0) + IL_0000: ldarg.0 + IL_0001: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0006: stloc.0 + IL_0007: br.s IL_0009 + + IL_0009: ldloc.0 + IL_000a: ret + } // end of method '<>f__AnonymousType2`2'::get_Y + + .method public hidebysig virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 89 (0x59) + .maxstack 2 + .locals init (class [mscorlib]System.Text.StringBuilder V_0, + string V_1) + IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor() + IL_0005: stloc.0 + IL_0006: ldloc.0 + IL_0007: ldstr "{ X = " + IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_0011: pop + IL_0012: ldloc.0 + IL_0013: ldarg.0 + IL_0014: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0019: box !'j__TPar' + IL_001e: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object) + IL_0023: pop + IL_0024: ldloc.0 + IL_0025: ldstr ", Y = " + IL_002a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_002f: pop + IL_0030: ldloc.0 + IL_0031: ldarg.0 + IL_0032: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0037: box !'j__TPar' + IL_003c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object) + IL_0041: pop + IL_0042: ldloc.0 + IL_0043: ldstr " }" + IL_0048: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_004d: pop + IL_004e: ldloc.0 + IL_004f: callvirt instance string [mscorlib]System.Object::ToString() + IL_0054: stloc.1 + IL_0055: br.s IL_0057 + + IL_0057: ldloc.1 + IL_0058: ret + } // end of method '<>f__AnonymousType2`2'::ToString + + .method public hidebysig virtual instance bool + Equals(object 'value') cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 65 (0x41) + .maxstack 3 + .locals init (class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'> V_0, + bool V_1) + IL_0000: ldarg.1 + IL_0001: isinst class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'> + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_003a + + IL_000a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_000f: ldarg.0 + IL_0010: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0015: ldloc.0 + IL_0016: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_001b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0, + !0) + IL_0020: brfalse.s IL_003a + + IL_0022: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_0027: ldarg.0 + IL_0028: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_002d: ldloc.0 + IL_002e: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0033: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0, + !0) + IL_0038: br.s IL_003b + + IL_003a: ldc.i4.0 + IL_003b: nop + IL_003c: stloc.1 + IL_003d: br.s IL_003f + + IL_003f: ldloc.1 + IL_0040: ret + } // end of method '<>f__AnonymousType2`2'::Equals + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 62 (0x3e) + .maxstack 3 + .locals init (int32 V_0, + int32 V_1) + IL_0000: ldc.i4 0xc18f39dd + IL_0005: stloc.0 + IL_0006: ldc.i4 0xa5555529 + IL_000b: ldloc.0 + IL_000c: mul + IL_000d: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_0012: ldarg.0 + IL_0013: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0018: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0) + IL_001d: add + IL_001e: stloc.0 + IL_001f: ldc.i4 0xa5555529 + IL_0024: ldloc.0 + IL_0025: mul + IL_0026: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_002b: ldarg.0 + IL_002c: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0031: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0) + IL_0036: add + IL_0037: stloc.0 + IL_0038: ldloc.0 + IL_0039: stloc.1 + IL_003a: br.s IL_003c + + IL_003c: ldloc.1 + IL_003d: ret + } // end of method '<>f__AnonymousType2`2'::GetHashCode + + .property instance !'j__TPar' X() + { + .get instance !'j__TPar' '<>f__AnonymousType2`2'::get_X() + } // end of property '<>f__AnonymousType2`2'::X + .property instance !'j__TPar' Y() + { + .get instance !'j__TPar' '<>f__AnonymousType2`2'::get_Y() + } // end of property '<>f__AnonymousType2`2'::Y +} // end of class '<>f__AnonymousType2`2' + +.class private auto ansi sealed beforefieldinit '<>f__AnonymousType3`3'<'j__TPar','j__TPar','j__TPar'> + extends [mscorlib]System.Object +{ + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .field private initonly !'j__TPar' 'i__Field' + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field private initonly !'j__TPar' 'i__Field' + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field private initonly !'j__TPar' 'i__Field' + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname rtspecialname + instance void .ctor(!'j__TPar' X, + !'j__TPar' Y, + !'j__TPar' Z) cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 28 (0x1c) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_000d: ldarg.0 + IL_000e: ldarg.2 + IL_000f: stfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0014: ldarg.0 + IL_0015: ldarg.3 + IL_0016: stfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_001b: ret + } // end of method '<>f__AnonymousType3`3'::.ctor + + .method public hidebysig specialname instance !'j__TPar' + get_X() cil managed + { + // Code size 11 (0xb) + .maxstack 1 + .locals init (!'j__TPar' V_0) + IL_0000: ldarg.0 + IL_0001: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0006: stloc.0 + IL_0007: br.s IL_0009 + + IL_0009: ldloc.0 + IL_000a: ret + } // end of method '<>f__AnonymousType3`3'::get_X + + .method public hidebysig specialname instance !'j__TPar' + get_Y() cil managed + { + // Code size 11 (0xb) + .maxstack 1 + .locals init (!'j__TPar' V_0) + IL_0000: ldarg.0 + IL_0001: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0006: stloc.0 + IL_0007: br.s IL_0009 + + IL_0009: ldloc.0 + IL_000a: ret + } // end of method '<>f__AnonymousType3`3'::get_Y + + .method public hidebysig specialname instance !'j__TPar' + get_Z() cil managed + { + // Code size 11 (0xb) + .maxstack 1 + .locals init (!'j__TPar' V_0) + IL_0000: ldarg.0 + IL_0001: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0006: stloc.0 + IL_0007: br.s IL_0009 + + IL_0009: ldloc.0 + IL_000a: ret + } // end of method '<>f__AnonymousType3`3'::get_Z + + .method public hidebysig virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 119 (0x77) + .maxstack 2 + .locals init (class [mscorlib]System.Text.StringBuilder V_0, + string V_1) + IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor() + IL_0005: stloc.0 + IL_0006: ldloc.0 + IL_0007: ldstr "{ X = " + IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_0011: pop + IL_0012: ldloc.0 + IL_0013: ldarg.0 + IL_0014: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0019: box !'j__TPar' + IL_001e: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object) + IL_0023: pop + IL_0024: ldloc.0 + IL_0025: ldstr ", Y = " + IL_002a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_002f: pop + IL_0030: ldloc.0 + IL_0031: ldarg.0 + IL_0032: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0037: box !'j__TPar' + IL_003c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object) + IL_0041: pop + IL_0042: ldloc.0 + IL_0043: ldstr ", Z = " + IL_0048: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_004d: pop + IL_004e: ldloc.0 + IL_004f: ldarg.0 + IL_0050: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0055: box !'j__TPar' + IL_005a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object) + IL_005f: pop + IL_0060: ldloc.0 + IL_0061: ldstr " }" + IL_0066: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_006b: pop + IL_006c: ldloc.0 + IL_006d: callvirt instance string [mscorlib]System.Object::ToString() + IL_0072: stloc.1 + IL_0073: br.s IL_0075 + + IL_0075: ldloc.1 + IL_0076: ret + } // end of method '<>f__AnonymousType3`3'::ToString + + .method public hidebysig virtual instance bool + Equals(object 'value') cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 89 (0x59) + .maxstack 3 + .locals init (class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'> V_0, + bool V_1) + IL_0000: ldarg.1 + IL_0001: isinst class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'> + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0052 + + IL_000a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_000f: ldarg.0 + IL_0010: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0015: ldloc.0 + IL_0016: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_001b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0, + !0) + IL_0020: brfalse.s IL_0052 + + IL_0022: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_0027: ldarg.0 + IL_0028: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_002d: ldloc.0 + IL_002e: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0033: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0, + !0) + IL_0038: brfalse.s IL_0052 + + IL_003a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_003f: ldarg.0 + IL_0040: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0045: ldloc.0 + IL_0046: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_004b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0, + !0) + IL_0050: br.s IL_0053 + + IL_0052: ldc.i4.0 + IL_0053: nop + IL_0054: stloc.1 + IL_0055: br.s IL_0057 + + IL_0057: ldloc.1 + IL_0058: ret + } // end of method '<>f__AnonymousType3`3'::Equals + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 87 (0x57) + .maxstack 3 + .locals init (int32 V_0, + int32 V_1) + IL_0000: ldc.i4 0xd0c61e6a + IL_0005: stloc.0 + IL_0006: ldc.i4 0xa5555529 + IL_000b: ldloc.0 + IL_000c: mul + IL_000d: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_0012: ldarg.0 + IL_0013: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0018: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0) + IL_001d: add + IL_001e: stloc.0 + IL_001f: ldc.i4 0xa5555529 + IL_0024: ldloc.0 + IL_0025: mul + IL_0026: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_002b: ldarg.0 + IL_002c: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0031: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0) + IL_0036: add + IL_0037: stloc.0 + IL_0038: ldc.i4 0xa5555529 + IL_003d: ldloc.0 + IL_003e: mul + IL_003f: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_0044: ldarg.0 + IL_0045: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_004a: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0) + IL_004f: add + IL_0050: stloc.0 + IL_0051: ldloc.0 + IL_0052: stloc.1 + IL_0053: br.s IL_0055 + + IL_0055: ldloc.1 + IL_0056: ret + } // end of method '<>f__AnonymousType3`3'::GetHashCode + + .property instance !'j__TPar' X() + { + .get instance !'j__TPar' '<>f__AnonymousType3`3'::get_X() + } // end of property '<>f__AnonymousType3`3'::X + .property instance !'j__TPar' Y() + { + .get instance !'j__TPar' '<>f__AnonymousType3`3'::get_Y() + } // end of property '<>f__AnonymousType3`3'::Y + .property instance !'j__TPar' Z() + { + .get instance !'j__TPar' '<>f__AnonymousType3`3'::get_Z() + } // end of property '<>f__AnonymousType3`3'::Z +} // end of class '<>f__AnonymousType3`3' + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** +// WARNING: Created Win32 resource file ../../Tests/TestCases/Pretty\AnonymousTypes.res diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.opt.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.opt.il new file mode 100644 index 000000000..34969ec05 --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.opt.il @@ -0,0 +1,738 @@ + +// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17929 +// Copyright (c) Microsoft Corporation. All rights reserved. + + + +// Metadata version: v4.0.30319 +.assembly extern mscorlib +{ + .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. + .ver 4:0:0:0 +} +.assembly ympalkau +{ + .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 + 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows. + .permissionset reqmin + = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}} + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.module ympalkau.dll +// MVID: {6272B544-8BFE-442F-9142-7052834C6BA6} +.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: 0x02D20000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.AnonymousTypes + extends [mscorlib]System.Object +{ + .method private hidebysig instance void + SimpleTypes() cil managed + { + // Code size 58 (0x3a) + .maxstack 2 + .locals init (class '<>f__AnonymousType0' V_0, + class '<>f__AnonymousType1`1' V_1, + class '<>f__AnonymousType2`2' V_2) + IL_0000: newobj instance void '<>f__AnonymousType0'::.ctor() + IL_0005: stloc.0 + IL_0006: ldc.i4.5 + IL_0007: newobj instance void class '<>f__AnonymousType1`1'::.ctor(!0) + IL_000c: stloc.1 + IL_000d: ldc.i4.5 + IL_000e: ldc.i4.s 10 + IL_0010: newobj instance void class '<>f__AnonymousType2`2'::.ctor(!0, + !1) + IL_0015: stloc.2 + IL_0016: ldloc.0 + IL_0017: call void [mscorlib]System.Console::WriteLine(object) + IL_001c: ldloc.1 + IL_001d: callvirt instance !0 class '<>f__AnonymousType1`1'::get_X() + IL_0022: call void [mscorlib]System.Console::WriteLine(int32) + IL_0027: ldloc.2 + IL_0028: callvirt instance !1 class '<>f__AnonymousType2`2'::get_Y() + IL_002d: ldloc.2 + IL_002e: callvirt instance !0 class '<>f__AnonymousType2`2'::get_X() + IL_0033: add + IL_0034: call void [mscorlib]System.Console::WriteLine(int32) + IL_0039: ret + } // end of method AnonymousTypes::SimpleTypes + + .method private hidebysig instance void + SimpleArray() cil managed + { + // Code size 59 (0x3b) + .maxstack 5 + .locals init (class '<>f__AnonymousType3`3'[] V_0, + class '<>f__AnonymousType3`3'[] V_1) + IL_0000: ldc.i4.2 + IL_0001: newarr class '<>f__AnonymousType3`3' + IL_0006: stloc.1 + IL_0007: ldloc.1 + IL_0008: ldc.i4.0 + IL_0009: ldc.i4.5 + IL_000a: ldc.i4.2 + IL_000b: ldc.i4.m1 + IL_000c: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0, + !1, + !2) + IL_0011: stelem.ref + IL_0012: ldloc.1 + IL_0013: ldc.i4.1 + IL_0014: ldc.i4.3 + IL_0015: ldc.i4.6 + IL_0016: ldc.i4.s -6 + IL_0018: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0, + !1, + !2) + IL_001d: stelem.ref + IL_001e: ldloc.1 + IL_001f: stloc.0 + IL_0020: ldloc.0 + IL_0021: ldc.i4.0 + IL_0022: ldelem.ref + IL_0023: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X() + IL_0028: call void [mscorlib]System.Console::WriteLine(int32) + IL_002d: ldloc.0 + IL_002e: ldc.i4.1 + IL_002f: ldelem.ref + IL_0030: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X() + IL_0035: call void [mscorlib]System.Console::WriteLine(int32) + IL_003a: ret + } // end of method AnonymousTypes::SimpleArray + + .method private hidebysig instance void + JaggedArray() cil managed + { + // Code size 84 (0x54) + .maxstack 5 + .locals init (class '<>f__AnonymousType3`3'[] V_0, + class '<>f__AnonymousType3`3'[][] V_1, + class '<>f__AnonymousType3`3'[] V_2, + class '<>f__AnonymousType3`3'[][] V_3) + IL_0000: ldc.i4.2 + IL_0001: newarr class '<>f__AnonymousType3`3' + IL_0006: stloc.2 + IL_0007: ldloc.2 + IL_0008: ldc.i4.0 + IL_0009: ldc.i4.5 + IL_000a: ldc.i4.2 + IL_000b: ldc.i4.m1 + IL_000c: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0, + !1, + !2) + IL_0011: stelem.ref + IL_0012: ldloc.2 + IL_0013: ldc.i4.1 + IL_0014: ldc.i4.3 + IL_0015: ldc.i4.6 + IL_0016: ldc.i4.s -6 + IL_0018: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0, + !1, + !2) + IL_001d: stelem.ref + IL_001e: ldloc.2 + IL_001f: stloc.0 + IL_0020: ldc.i4.2 + IL_0021: newarr class '<>f__AnonymousType3`3'[] + IL_0026: stloc.3 + IL_0027: ldloc.3 + IL_0028: ldc.i4.0 + IL_0029: ldloc.0 + IL_002a: stelem.ref + IL_002b: ldloc.3 + IL_002c: ldc.i4.1 + IL_002d: ldloc.0 + IL_002e: stelem.ref + IL_002f: ldloc.3 + IL_0030: stloc.1 + IL_0031: ldloc.0 + IL_0032: ldc.i4.0 + IL_0033: ldelem.ref + IL_0034: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X() + IL_0039: call void [mscorlib]System.Console::WriteLine(int32) + IL_003e: ldloc.0 + IL_003f: ldc.i4.1 + IL_0040: ldelem.ref + IL_0041: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X() + IL_0046: call void [mscorlib]System.Console::WriteLine(int32) + IL_004b: ldloc.1 + IL_004c: ldlen + IL_004d: conv.i4 + IL_004e: call void [mscorlib]System.Console::WriteLine(int32) + IL_0053: ret + } // end of method AnonymousTypes::JaggedArray + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method AnonymousTypes::.ctor + +} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.AnonymousTypes + +.class private auto ansi sealed beforefieldinit '<>f__AnonymousType0' + extends [mscorlib]System.Object +{ + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method '<>f__AnonymousType0'::.ctor + + .method public hidebysig virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 25 (0x19) + .maxstack 2 + .locals init (class [mscorlib]System.Text.StringBuilder V_0) + IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor() + IL_0005: stloc.0 + IL_0006: ldloc.0 + IL_0007: ldstr "{ }" + IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_0011: pop + IL_0012: ldloc.0 + IL_0013: callvirt instance string [mscorlib]System.Object::ToString() + IL_0018: ret + } // end of method '<>f__AnonymousType0'::ToString + + .method public hidebysig virtual instance bool + Equals(object 'value') cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 15 (0xf) + .maxstack 2 + .locals init (class '<>f__AnonymousType0' V_0) + IL_0000: ldarg.1 + IL_0001: isinst '<>f__AnonymousType0' + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: ldnull + IL_0009: ceq + IL_000b: ldc.i4.0 + IL_000c: ceq + IL_000e: ret + } // end of method '<>f__AnonymousType0'::Equals + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 4 (0x4) + .maxstack 1 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldloc.0 + IL_0003: ret + } // end of method '<>f__AnonymousType0'::GetHashCode + +} // end of class '<>f__AnonymousType0' + +.class private auto ansi sealed beforefieldinit '<>f__AnonymousType1`1'<'j__TPar'> + extends [mscorlib]System.Object +{ + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .field private initonly !'j__TPar' 'i__Field' + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname rtspecialname + instance void .ctor(!'j__TPar' X) cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field' + IL_000d: ret + } // end of method '<>f__AnonymousType1`1'::.ctor + + .method public hidebysig specialname instance !'j__TPar' + get_X() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field' + IL_0006: ret + } // end of method '<>f__AnonymousType1`1'::get_X + + .method public hidebysig virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 55 (0x37) + .maxstack 2 + .locals init (class [mscorlib]System.Text.StringBuilder V_0) + IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor() + IL_0005: stloc.0 + IL_0006: ldloc.0 + IL_0007: ldstr "{ X = " + IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_0011: pop + IL_0012: ldloc.0 + IL_0013: ldarg.0 + IL_0014: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field' + IL_0019: box !'j__TPar' + IL_001e: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object) + IL_0023: pop + IL_0024: ldloc.0 + IL_0025: ldstr " }" + IL_002a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_002f: pop + IL_0030: ldloc.0 + IL_0031: callvirt instance string [mscorlib]System.Object::ToString() + IL_0036: ret + } // end of method '<>f__AnonymousType1`1'::ToString + + .method public hidebysig virtual instance bool + Equals(object 'value') cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 35 (0x23) + .maxstack 3 + .locals init (class '<>f__AnonymousType1`1'j__TPar'> V_0) + IL_0000: ldarg.1 + IL_0001: isinst class '<>f__AnonymousType1`1'j__TPar'> + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0021 + + IL_000a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_000f: ldarg.0 + IL_0010: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field' + IL_0015: ldloc.0 + IL_0016: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field' + IL_001b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0, + !0) + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } // end of method '<>f__AnonymousType1`1'::Equals + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 33 (0x21) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldc.i4 0x12721cd8 + IL_0005: stloc.0 + IL_0006: ldc.i4 0xa5555529 + IL_000b: ldloc.0 + IL_000c: mul + IL_000d: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_0012: ldarg.0 + IL_0013: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field' + IL_0018: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0) + IL_001d: add + IL_001e: stloc.0 + IL_001f: ldloc.0 + IL_0020: ret + } // end of method '<>f__AnonymousType1`1'::GetHashCode + + .property instance !'j__TPar' X() + { + .get instance !'j__TPar' '<>f__AnonymousType1`1'::get_X() + } // end of property '<>f__AnonymousType1`1'::X +} // end of class '<>f__AnonymousType1`1' + +.class private auto ansi sealed beforefieldinit '<>f__AnonymousType2`2'<'j__TPar','j__TPar'> + extends [mscorlib]System.Object +{ + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .field private initonly !'j__TPar' 'i__Field' + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field private initonly !'j__TPar' 'i__Field' + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname rtspecialname + instance void .ctor(!'j__TPar' X, + !'j__TPar' Y) cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 21 (0x15) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_000d: ldarg.0 + IL_000e: ldarg.2 + IL_000f: stfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0014: ret + } // end of method '<>f__AnonymousType2`2'::.ctor + + .method public hidebysig specialname instance !'j__TPar' + get_X() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0006: ret + } // end of method '<>f__AnonymousType2`2'::get_X + + .method public hidebysig specialname instance !'j__TPar' + get_Y() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0006: ret + } // end of method '<>f__AnonymousType2`2'::get_Y + + .method public hidebysig virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 85 (0x55) + .maxstack 2 + .locals init (class [mscorlib]System.Text.StringBuilder V_0) + IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor() + IL_0005: stloc.0 + IL_0006: ldloc.0 + IL_0007: ldstr "{ X = " + IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_0011: pop + IL_0012: ldloc.0 + IL_0013: ldarg.0 + IL_0014: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0019: box !'j__TPar' + IL_001e: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object) + IL_0023: pop + IL_0024: ldloc.0 + IL_0025: ldstr ", Y = " + IL_002a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_002f: pop + IL_0030: ldloc.0 + IL_0031: ldarg.0 + IL_0032: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0037: box !'j__TPar' + IL_003c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object) + IL_0041: pop + IL_0042: ldloc.0 + IL_0043: ldstr " }" + IL_0048: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_004d: pop + IL_004e: ldloc.0 + IL_004f: callvirt instance string [mscorlib]System.Object::ToString() + IL_0054: ret + } // end of method '<>f__AnonymousType2`2'::ToString + + .method public hidebysig virtual instance bool + Equals(object 'value') cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 59 (0x3b) + .maxstack 3 + .locals init (class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'> V_0) + IL_0000: ldarg.1 + IL_0001: isinst class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'> + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0039 + + IL_000a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_000f: ldarg.0 + IL_0010: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0015: ldloc.0 + IL_0016: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_001b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0, + !0) + IL_0020: brfalse.s IL_0039 + + IL_0022: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_0027: ldarg.0 + IL_0028: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_002d: ldloc.0 + IL_002e: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0033: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0, + !0) + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + } // end of method '<>f__AnonymousType2`2'::Equals + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 58 (0x3a) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldc.i4 0xc18f39dd + IL_0005: stloc.0 + IL_0006: ldc.i4 0xa5555529 + IL_000b: ldloc.0 + IL_000c: mul + IL_000d: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_0012: ldarg.0 + IL_0013: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0018: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0) + IL_001d: add + IL_001e: stloc.0 + IL_001f: ldc.i4 0xa5555529 + IL_0024: ldloc.0 + IL_0025: mul + IL_0026: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_002b: ldarg.0 + IL_002c: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field' + IL_0031: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0) + IL_0036: add + IL_0037: stloc.0 + IL_0038: ldloc.0 + IL_0039: ret + } // end of method '<>f__AnonymousType2`2'::GetHashCode + + .property instance !'j__TPar' X() + { + .get instance !'j__TPar' '<>f__AnonymousType2`2'::get_X() + } // end of property '<>f__AnonymousType2`2'::X + .property instance !'j__TPar' Y() + { + .get instance !'j__TPar' '<>f__AnonymousType2`2'::get_Y() + } // end of property '<>f__AnonymousType2`2'::Y +} // end of class '<>f__AnonymousType2`2' + +.class private auto ansi sealed beforefieldinit '<>f__AnonymousType3`3'<'j__TPar','j__TPar','j__TPar'> + extends [mscorlib]System.Object +{ + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .field private initonly !'j__TPar' 'i__Field' + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field private initonly !'j__TPar' 'i__Field' + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field private initonly !'j__TPar' 'i__Field' + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname rtspecialname + instance void .ctor(!'j__TPar' X, + !'j__TPar' Y, + !'j__TPar' Z) cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 28 (0x1c) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_000d: ldarg.0 + IL_000e: ldarg.2 + IL_000f: stfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0014: ldarg.0 + IL_0015: ldarg.3 + IL_0016: stfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_001b: ret + } // end of method '<>f__AnonymousType3`3'::.ctor + + .method public hidebysig specialname instance !'j__TPar' + get_X() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0006: ret + } // end of method '<>f__AnonymousType3`3'::get_X + + .method public hidebysig specialname instance !'j__TPar' + get_Y() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0006: ret + } // end of method '<>f__AnonymousType3`3'::get_Y + + .method public hidebysig specialname instance !'j__TPar' + get_Z() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0006: ret + } // end of method '<>f__AnonymousType3`3'::get_Z + + .method public hidebysig virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 115 (0x73) + .maxstack 2 + .locals init (class [mscorlib]System.Text.StringBuilder V_0) + IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor() + IL_0005: stloc.0 + IL_0006: ldloc.0 + IL_0007: ldstr "{ X = " + IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_0011: pop + IL_0012: ldloc.0 + IL_0013: ldarg.0 + IL_0014: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0019: box !'j__TPar' + IL_001e: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object) + IL_0023: pop + IL_0024: ldloc.0 + IL_0025: ldstr ", Y = " + IL_002a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_002f: pop + IL_0030: ldloc.0 + IL_0031: ldarg.0 + IL_0032: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0037: box !'j__TPar' + IL_003c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object) + IL_0041: pop + IL_0042: ldloc.0 + IL_0043: ldstr ", Z = " + IL_0048: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_004d: pop + IL_004e: ldloc.0 + IL_004f: ldarg.0 + IL_0050: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0055: box !'j__TPar' + IL_005a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object) + IL_005f: pop + IL_0060: ldloc.0 + IL_0061: ldstr " }" + IL_0066: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) + IL_006b: pop + IL_006c: ldloc.0 + IL_006d: callvirt instance string [mscorlib]System.Object::ToString() + IL_0072: ret + } // end of method '<>f__AnonymousType3`3'::ToString + + .method public hidebysig virtual instance bool + Equals(object 'value') cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 83 (0x53) + .maxstack 3 + .locals init (class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'> V_0) + IL_0000: ldarg.1 + IL_0001: isinst class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'> + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0051 + + IL_000a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_000f: ldarg.0 + IL_0010: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0015: ldloc.0 + IL_0016: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_001b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0, + !0) + IL_0020: brfalse.s IL_0051 + + IL_0022: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_0027: ldarg.0 + IL_0028: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_002d: ldloc.0 + IL_002e: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0033: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0, + !0) + IL_0038: brfalse.s IL_0051 + + IL_003a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_003f: ldarg.0 + IL_0040: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0045: ldloc.0 + IL_0046: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_004b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0, + !0) + IL_0050: ret + + IL_0051: ldc.i4.0 + IL_0052: ret + } // end of method '<>f__AnonymousType3`3'::Equals + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 83 (0x53) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldc.i4 0xd0c61e6a + IL_0005: stloc.0 + IL_0006: ldc.i4 0xa5555529 + IL_000b: ldloc.0 + IL_000c: mul + IL_000d: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_0012: ldarg.0 + IL_0013: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0018: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0) + IL_001d: add + IL_001e: stloc.0 + IL_001f: ldc.i4 0xa5555529 + IL_0024: ldloc.0 + IL_0025: mul + IL_0026: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_002b: ldarg.0 + IL_002c: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_0031: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0) + IL_0036: add + IL_0037: stloc.0 + IL_0038: ldc.i4 0xa5555529 + IL_003d: ldloc.0 + IL_003e: mul + IL_003f: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default() + IL_0044: ldarg.0 + IL_0045: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field' + IL_004a: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0) + IL_004f: add + IL_0050: stloc.0 + IL_0051: ldloc.0 + IL_0052: ret + } // end of method '<>f__AnonymousType3`3'::GetHashCode + + .property instance !'j__TPar' X() + { + .get instance !'j__TPar' '<>f__AnonymousType3`3'::get_X() + } // end of property '<>f__AnonymousType3`3'::X + .property instance !'j__TPar' Y() + { + .get instance !'j__TPar' '<>f__AnonymousType3`3'::get_Y() + } // end of property '<>f__AnonymousType3`3'::Y + .property instance !'j__TPar' Z() + { + .get instance !'j__TPar' '<>f__AnonymousType3`3'::get_Z() + } // end of property '<>f__AnonymousType3`3'::Z +} // end of class '<>f__AnonymousType3`3' + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** +// WARNING: Created Win32 resource file ../../Tests/TestCases/Pretty\AnonymousTypes.opt.res