From bedff74b61d15ffff935cb41471a2debd72b0ea0 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Tue, 22 Nov 2016 21:10:16 +0100 Subject: [PATCH] Run correctness tests with roslyn, and add some roslyn-based pretty-tests as well. --- .../ICSharpCode.Decompiler.csproj | 4 +- .../Tests/CorrectnessTestRunner.cs | 90 +- .../Tests/Helpers/Tester.cs | 67 +- .../Tests/ICSharpCode.Decompiler.Tests.csproj | 24 +- .../Tests/PrettyTestRunner.cs | 34 +- .../Tests/TestCases/Pretty/.gitignore | 1 + .../Pretty/CompoundAssignmentTest.cs | 5 - .../Pretty/CompoundAssignmentTest.il | 21 +- .../Pretty/CompoundAssignmentTest.opt.il | 726 +++++++++++++++ .../CompoundAssignmentTest.opt.roslyn.il | 728 +++++++++++++++ .../Pretty/CompoundAssignmentTest.roslyn.il | 863 ++++++++++++++++++ .../Tests/TestCases/Pretty/HelloWorld.il | 13 +- .../TestCases/Pretty/InlineAssignmentTest.cs | 5 - .../TestCases/Pretty/InlineAssignmentTest.il | 21 +- .../Pretty/InlineAssignmentTest.opt.il | 250 +++++ .../Tests/TestCases/Pretty/ShortCircuit.il | 8 +- .../TestCases/Pretty/ShortCircuit.opt.il | 18 +- .../Pretty/ShortCircuit.opt.roslyn.il | 303 ++++++ .../TestCases/Pretty/ShortCircuit.roslyn.il | 383 ++++++++ ICSharpCode.Decompiler/Tests/app.config | 11 + ICSharpCode.Decompiler/Tests/packages.config | 6 +- ICSharpCode.Decompiler/packages.config | 2 +- .../Tests/ILSpy.BamlDecompiler.Tests.csproj | 1 + ILSpy.BamlDecompiler/Tests/app.config | 11 + ILSpy/ILSpy.csproj | 4 +- ILSpy/packages.config | 2 +- Rebracer.xml | 8 +- 27 files changed, 3470 insertions(+), 139 deletions(-) create mode 100644 ICSharpCode.Decompiler/Tests/TestCases/Pretty/.gitignore create mode 100644 ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.opt.il create mode 100644 ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.opt.roslyn.il create mode 100644 ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.roslyn.il create mode 100644 ICSharpCode.Decompiler/Tests/TestCases/Pretty/InlineAssignmentTest.opt.il create mode 100644 ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.opt.roslyn.il create mode 100644 ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.roslyn.il create mode 100644 ICSharpCode.Decompiler/Tests/app.config create mode 100644 ILSpy.BamlDecompiler/Tests/app.config diff --git a/ICSharpCode.Decompiler/ICSharpCode.Decompiler.csproj b/ICSharpCode.Decompiler/ICSharpCode.Decompiler.csproj index 2ae10ad42..c707e796d 100644 --- a/ICSharpCode.Decompiler/ICSharpCode.Decompiler.csproj +++ b/ICSharpCode.Decompiler/ICSharpCode.Decompiler.csproj @@ -50,8 +50,8 @@ - - ..\packages\System.Collections.Immutable.1.2.0-rc2-24027\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll + + ..\packages\System.Collections.Immutable.1.3.0\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll True diff --git a/ICSharpCode.Decompiler/Tests/CorrectnessTestRunner.cs b/ICSharpCode.Decompiler/Tests/CorrectnessTestRunner.cs index 834e7cef3..524ff111d 100644 --- a/ICSharpCode.Decompiler/Tests/CorrectnessTestRunner.cs +++ b/ICSharpCode.Decompiler/Tests/CorrectnessTestRunner.cs @@ -20,6 +20,7 @@ using System; using System.CodeDom.Compiler; using System.IO; using System.Linq; +using System.Runtime.CompilerServices; using ICSharpCode.Decompiler.Tests.Helpers; using NUnit.Framework; @@ -45,107 +46,108 @@ namespace ICSharpCode.Decompiler.Tests } } - [Test] - public void Comparisons() + static readonly CompilerOptions[] defaultOptions = { - TestCompileDecompileCompileOutputAll("Comparisons.cs"); - } + CompilerOptions.None, + CompilerOptions.Optimize, + CompilerOptions.UseRoslyn, + CompilerOptions.Optimize | CompilerOptions.UseRoslyn + }; [Test] - public void Conversions() + public void Comparisons([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutputAll("Conversions.cs"); + RunCS(options: options); } [Test] - public void HelloWorld() + public void Conversions([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutputAll("HelloWorld.cs"); + RunCS(options: options); } [Test] - public void ControlFlow() + public void HelloWorld([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutputAll("ControlFlow.cs"); + RunCS(options: options); } [Test] - public void CompoundAssignment() + public void ControlFlow([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutputAll("CompoundAssignment.cs"); + RunCS(options: options); } [Test] - public void PropertiesAndEvents() + public void CompoundAssignment([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutputAll("PropertiesAndEvents.cs"); + RunCS(options: options); } [Test] - public void Switch() + public void PropertiesAndEvents([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutputAll("Switch.cs"); + RunCS(options: options); } [Test] - public void Generics() + public void Switch([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutputAll("Generics.cs"); + RunCS(options: options); } [Test] - public void ValueTypeCall() + public void Generics([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutputAll("ValueTypeCall.cs"); + RunCS(options: options); } - + [Test] - public void InitializerTests() + public void ValueTypeCall([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutputAll("InitializerTests.cs"); + RunCS(options: options); } - + [Test] - public void DecimalFields() + public void InitializerTests([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutputAll("DecimalFields.cs"); + RunCS(options: options); } - + [Test] - public void UndocumentedExpressions() + public void DecimalFields([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutputAll("UndocumentedExpressions.cs"); + RunCS(options: options); } - + [Test] - public void MemberLookup() + public void UndocumentedExpressions([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutputAll("MemberLookup.cs"); + RunCS(options: options); } [Test] - public void BitNot() + public void MemberLookup([ValueSource("defaultOptions")] CompilerOptions options) { - TestAssembleDecompileCompileOutput("BitNot.il"); - TestAssembleDecompileCompileOutput("BitNot.il", CompilerOptions.UseDebug | CompilerOptions.Force32Bit, AssemblerOptions.Force32Bit); + RunCS(options: options); } [Test] - public void UnsafeCode() + public void BitNot() { - TestCompileDecompileCompileOutputAll("UnsafeCode.cs"); + RunIL("BitNot.il"); + RunIL("BitNot.il", CompilerOptions.UseDebug | CompilerOptions.Force32Bit, AssemblerOptions.Force32Bit); } - void TestCompileDecompileCompileOutputAll(string testFileName) + [Test] + public void UnsafeCode([ValueSource("defaultOptions")] CompilerOptions options) { - TestCompileDecompileCompileOutput(testFileName, CompilerOptions.None); - TestCompileDecompileCompileOutput(testFileName, CompilerOptions.UseDebug); - TestCompileDecompileCompileOutput(testFileName, CompilerOptions.Optimize); - TestCompileDecompileCompileOutput(testFileName, CompilerOptions.UseDebug | CompilerOptions.Optimize); + RunCS(options: options); } - void TestCompileDecompileCompileOutput(string testFileName, CompilerOptions options = CompilerOptions.UseDebug) + void RunCS([CallerMemberName] string testName = null, CompilerOptions options = CompilerOptions.UseDebug) { + string testFileName = testName + ".cs"; CompilerResults outputFile = null, decompiledOutputFile = null; try { @@ -166,7 +168,7 @@ namespace ICSharpCode.Decompiler.Tests } } - void TestAssembleDecompileCompileOutput(string testFileName, CompilerOptions options = CompilerOptions.UseDebug, AssemblerOptions asmOptions = AssemblerOptions.None) + void RunIL(string testFileName, CompilerOptions options = CompilerOptions.UseDebug, AssemblerOptions asmOptions = AssemblerOptions.None) { string outputFile = null; CompilerResults decompiledOutputFile = null; diff --git a/ICSharpCode.Decompiler/Tests/Helpers/Tester.cs b/ICSharpCode.Decompiler/Tests/Helpers/Tester.cs index 3d67a490a..eb83eb983 100644 --- a/ICSharpCode.Decompiler/Tests/Helpers/Tester.cs +++ b/ICSharpCode.Decompiler/Tests/Helpers/Tester.cs @@ -28,6 +28,9 @@ using System.Threading.Tasks; using ICSharpCode.Decompiler.CSharp; using ICSharpCode.Decompiler.CSharp.Transforms; using ICSharpCode.NRefactory.CSharp; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.Text; using Microsoft.CSharp; using Mono.Cecil; using NUnit.Framework; @@ -41,7 +44,8 @@ namespace ICSharpCode.Decompiler.Tests.Helpers Optimize = 0x1, UseDebug = 0x2, Force32Bit = 0x4, - Library = 0x8 + Library = 0x8, + UseRoslyn = 0x10, } [Flags] @@ -121,27 +125,62 @@ namespace ICSharpCode.Decompiler.Tests.Helpers return outputFile; } + static readonly Lazy> defaultReferences = new Lazy>(delegate { + string refAsmPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), + @"Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5"); + return new[] + { + MetadataReference.CreateFromFile(Path.Combine(refAsmPath, "mscorlib.dll")), + MetadataReference.CreateFromFile(Path.Combine(refAsmPath, "System.dll")), + MetadataReference.CreateFromFile(Path.Combine(refAsmPath, "System.Core.dll")) + }; + }); + public static CompilerResults CompileCSharp(string sourceFileName, CompilerOptions flags = CompilerOptions.UseDebug) { List sourceFileNames = new List { sourceFileName }; foreach (Match match in Regex.Matches(File.ReadAllText(sourceFileName), @"#include ""([\w\d./]+)""")) { sourceFileNames.Add(Path.GetFullPath(Path.Combine(Path.GetDirectoryName(sourceFileName), match.Groups[1].Value))); } - - CSharpCodeProvider provider = new CSharpCodeProvider(new Dictionary { { "CompilerVersion", "v4.0" } }); - CompilerParameters options = new CompilerParameters(); - options.GenerateExecutable = !flags.HasFlag(CompilerOptions.Library); - options.CompilerOptions = "/unsafe /o" + (flags.HasFlag(CompilerOptions.Optimize) ? "+" : "-") + (flags.HasFlag(CompilerOptions.UseDebug) ? " /debug" : "") + (flags.HasFlag(CompilerOptions.Force32Bit) ? " /platform:anycpu32bitpreferred" : ""); - options.ReferencedAssemblies.Add("System.Core.dll"); - CompilerResults results = provider.CompileAssemblyFromFile(options, sourceFileNames.ToArray()); - if (results.Errors.Cast().Any(e => !e.IsWarning)) { - StringBuilder b = new StringBuilder("Compiler error:"); - foreach (var error in results.Errors) { - b.AppendLine(error.ToString()); + + if (flags.HasFlag(CompilerOptions.UseRoslyn)) { + var syntaxTrees = sourceFileNames.Select(f => SyntaxFactory.ParseSyntaxTree(File.ReadAllText(f), path: f)); + var compilation = CSharpCompilation.Create(Path.GetFileNameWithoutExtension(sourceFileName), + syntaxTrees, defaultReferences.Value, + new CSharpCompilationOptions( + flags.HasFlag(CompilerOptions.Library) ? OutputKind.DynamicallyLinkedLibrary : OutputKind.ConsoleApplication, + platform: flags.HasFlag(CompilerOptions.Force32Bit) ? Platform.X86 : Platform.AnyCpu, + optimizationLevel: flags.HasFlag(CompilerOptions.Optimize) ? OptimizationLevel.Release : OptimizationLevel.Debug, + allowUnsafe: true, + deterministic: true + )); + CompilerResults results = new CompilerResults(new TempFileCollection()); + results.PathToAssembly = Path.GetTempFileName(); + var emitResult = compilation.Emit(results.PathToAssembly); + if (!emitResult.Success) { + StringBuilder b = new StringBuilder("Compiler error:"); + foreach (var diag in emitResult.Diagnostics) { + b.AppendLine(diag.ToString()); + } + throw new Exception(b.ToString()); + } + return results; + } else { + var provider = new CSharpCodeProvider(new Dictionary { { "CompilerVersion", "v4.0" } }); + CompilerParameters options = new CompilerParameters(); + options.GenerateExecutable = !flags.HasFlag(CompilerOptions.Library); + options.CompilerOptions = "/unsafe /o" + (flags.HasFlag(CompilerOptions.Optimize) ? "+" : "-") + (flags.HasFlag(CompilerOptions.UseDebug) ? " /debug" : "") + (flags.HasFlag(CompilerOptions.Force32Bit) ? " /platform:anycpu32bitpreferred" : ""); + options.ReferencedAssemblies.Add("System.Core.dll"); + CompilerResults results = provider.CompileAssemblyFromFile(options, sourceFileNames.ToArray()); + if (results.Errors.Cast().Any(e => !e.IsWarning)) { + StringBuilder b = new StringBuilder("Compiler error:"); + foreach (var error in results.Errors) { + b.AppendLine(error.ToString()); + } + throw new Exception(b.ToString()); } - throw new Exception(b.ToString()); + return results; } - return results; } public static int Run(string assemblyFileName, out string output, out string error) diff --git a/ICSharpCode.Decompiler/Tests/ICSharpCode.Decompiler.Tests.csproj b/ICSharpCode.Decompiler/Tests/ICSharpCode.Decompiler.Tests.csproj index c221bd974..e9704298e 100644 --- a/ICSharpCode.Decompiler/Tests/ICSharpCode.Decompiler.Tests.csproj +++ b/ICSharpCode.Decompiler/Tests/ICSharpCode.Decompiler.Tests.csproj @@ -21,6 +21,8 @@ ..\..\NRefactory\ICSharpCode.NRefactory.snk False File + + x86 @@ -54,6 +56,15 @@ ..\..\packages\DiffLib.1.0.0.55\lib\net35-Client\DiffLib.dll + + ..\..\packages\Microsoft.CodeAnalysis.Common.1.3.2\lib\net45\Microsoft.CodeAnalysis.dll + True + + + ..\..\packages\Microsoft.CodeAnalysis.CSharp.1.3.2\lib\net45\Microsoft.CodeAnalysis.CSharp.dll + True + + ..\..\packages\NUnitTestAdapter.2.0.0\lib\nunit.core.dll False @@ -75,19 +86,24 @@ False - - ..\..\packages\System.Collections.Immutable.1.2.0-rc2-24027\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll + + ..\..\packages\System.Collections.Immutable.1.3.0\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll True 3.5 + + ..\..\packages\System.Reflection.Metadata.1.2.0\lib\portable-net45+win8\System.Reflection.Metadata.dll + True + 3.5 + @@ -163,5 +179,9 @@ + + + + \ No newline at end of file diff --git a/ICSharpCode.Decompiler/Tests/PrettyTestRunner.cs b/ICSharpCode.Decompiler/Tests/PrettyTestRunner.cs index dace3a8a6..f6d8f3a95 100644 --- a/ICSharpCode.Decompiler/Tests/PrettyTestRunner.cs +++ b/ICSharpCode.Decompiler/Tests/PrettyTestRunner.cs @@ -47,7 +47,21 @@ namespace ICSharpCode.Decompiler.Tests Assert.Contains(testName, testNames); } } - + + static readonly CompilerOptions[] noRoslynOptions = + { + CompilerOptions.None, + CompilerOptions.Optimize + }; + + static readonly CompilerOptions[] defaultOptions = + { + CompilerOptions.None, + CompilerOptions.Optimize, + CompilerOptions.UseRoslyn, + CompilerOptions.Optimize | CompilerOptions.UseRoslyn + }; + [Test] public void HelloWorld() { @@ -56,21 +70,19 @@ namespace ICSharpCode.Decompiler.Tests } [Test] - public void InlineAssignmentTest() + public void InlineAssignmentTest([ValueSource("noRoslynOptions")] CompilerOptions cscOptions) { - Run(); - Run(asmOptions: AssemblerOptions.UseDebug); + Run(cscOptions: cscOptions); } - + [Test] - public void CompoundAssignmentTest() + public void CompoundAssignmentTest([ValueSource("defaultOptions")] CompilerOptions cscOptions) { - Run(); - Run(asmOptions: AssemblerOptions.UseDebug); + Run(cscOptions: cscOptions); } - + [Test] - public void ShortCircuit([Values(CompilerOptions.None, CompilerOptions.Optimize)] CompilerOptions cscOptions) + public void ShortCircuit([ValueSource("defaultOptions")] CompilerOptions cscOptions) { Run(cscOptions: cscOptions); } @@ -84,6 +96,8 @@ namespace ICSharpCode.Decompiler.Tests ilFile += ".32"; if ((cscOptions & CompilerOptions.UseDebug) != 0) ilFile += ".dbg"; + if ((cscOptions & CompilerOptions.UseRoslyn) != 0) + ilFile += ".roslyn"; ilFile += ".il"; var csFile = Path.Combine(TestCasePath, testName + ".cs"); diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/.gitignore b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/.gitignore new file mode 100644 index 000000000..95060aaca --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/.gitignore @@ -0,0 +1 @@ +/*.res diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.cs b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.cs index 5e5eb068d..a907b8bb9 100644 --- a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.cs +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.cs @@ -97,11 +97,6 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty return value; } - public static void Main() - { - - } - public void Int32_Local_Add(int i) { i++; diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.il index 73fdb3a9f..60e6f990e 100644 --- a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.il +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.il @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17929 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.18020 // Copyright (c) Microsoft Corporation. All rights reserved. @@ -10,7 +10,7 @@ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 4:0:0:0 } -.assembly o4ovvbve +.assembly '51dcmowd' { .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 @@ -20,15 +20,15 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.module o4ovvbve.exe -// MVID: {8C8569FB-7FDE-4B4A-809D-7FA7F5088538} +.module '51dcmowd.dll' +// MVID: {BE23642D-B16F-447F-BA6D-BFD10D24A6FB} .custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) -.imagebase 0x00400000 +.imagebase 0x10000000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x01310000 +// Image base: 0x019B0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -260,15 +260,6 @@ IL_0006: ret } // end of method CompoundAssignmentTest::GetValue - .method public hidebysig static void Main() cil managed - { - .entrypoint - // Code size 2 (0x2) - .maxstack 8 - IL_0000: nop - IL_0001: ret - } // end of method CompoundAssignmentTest::Main - .method public hidebysig instance void Int32_Local_Add(int32 i) cil managed { diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.opt.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.opt.il new file mode 100644 index 000000000..b3a02cbc9 --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.opt.il @@ -0,0 +1,726 @@ + +// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.18020 +// 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 tz4h53ih +{ + .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 tz4h53ih.dll +// MVID: {DE0CEC69-313F-43C2-8F49-A59BB6099266} +.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: 0x005E0000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest + extends [mscorlib]System.Object +{ + .class auto ansi sealed nested private MyEnum + extends [mscorlib]System.Enum + { + .custom instance void [mscorlib]System.FlagsAttribute::.ctor() = ( 01 00 00 00 ) + .field public specialname rtspecialname int32 value__ + .field public static literal valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum None = int32(0x00000000) + .field public static literal valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum One = int32(0x00000001) + .field public static literal valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum Two = int32(0x00000002) + .field public static literal valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum Four = int32(0x00000004) + } // end of class MyEnum + + .class sequential ansi sealed nested private beforefieldinit StructContainer + extends [mscorlib]System.ValueType + { + .field public bool HasIndex + .field public int32 Field + } // end of class StructContainer + + .class auto ansi nested public beforefieldinit MutableClass + extends [mscorlib]System.Object + { + .custom instance void [mscorlib]System.Reflection.DefaultMemberAttribute::.ctor(string) = ( 01 00 04 49 74 65 6D 00 00 ) // ...Item.. + .field public int32 Field + .field private int32 'k__BackingField' + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .method public hidebysig specialname + instance int32 get_Property() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::'k__BackingField' + IL_0006: ret + } // end of method MutableClass::get_Property + + .method public hidebysig specialname + instance void set_Property(int32 'value') cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 8 (0x8) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::'k__BackingField' + IL_0007: ret + } // end of method MutableClass::set_Property + + .method public hidebysig specialname + instance uint32 get_Item(string name) cil managed + { + // Code size 2 (0x2) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: ret + } // end of method MutableClass::get_Item + + .method public hidebysig specialname + instance void set_Item(string name, + uint32 'value') cil managed + { + // Code size 1 (0x1) + .maxstack 8 + IL_0000: ret + } // end of method MutableClass::set_Item + + .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 MutableClass::.ctor + + .property instance int32 Property() + { + .get instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::get_Property() + .set instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::set_Property(int32) + } // end of property MutableClass::Property + .property instance uint32 Item(string) + { + .get instance uint32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::get_Item(string) + .set instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::set_Item(string, + uint32) + } // end of property MutableClass::Item + } // end of class MutableClass + + .field private int32 test1 + .field private int32[] array1 + .field private valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer field1 + .field private valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum enumField + .field public static int32 StaticField + .field private static int32 'k__BackingField' + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .method public hidebysig specialname static + int32 get_StaticProperty() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 6 (0x6) + .maxstack 8 + IL_0000: ldsfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::'k__BackingField' + IL_0005: ret + } // end of method CompoundAssignmentTest::get_StaticProperty + + .method public hidebysig specialname static + void set_StaticProperty(int32 'value') cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: stsfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::'k__BackingField' + IL_0006: ret + } // end of method CompoundAssignmentTest::set_StaticProperty + + .method private hidebysig instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass + M() cil managed + { + // Code size 6 (0x6) + .maxstack 8 + IL_0000: newobj instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::.ctor() + IL_0005: ret + } // end of method CompoundAssignmentTest::M + + .method private hidebysig instance int32[0...,0...] + Array() cil managed + { + // Code size 2 (0x2) + .maxstack 8 + IL_0000: ldnull + IL_0001: ret + } // end of method CompoundAssignmentTest::Array + + .method private hidebysig instance int32* + GetPointer() cil managed + { + // Code size 3 (0x3) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: conv.u + IL_0002: ret + } // end of method CompoundAssignmentTest::GetPointer + + .method public hidebysig instance int32 + GetIndex() cil managed + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: newobj instance void [mscorlib]System.Random::.ctor() + IL_0005: ldc.i4.0 + IL_0006: ldc.i4.s 100 + IL_0008: callvirt instance int32 [mscorlib]System.Random::Next(int32, + int32) + IL_000d: ret + } // end of method CompoundAssignmentTest::GetIndex + + .method public hidebysig instance int32[] + GetArray() cil managed + { + // Code size 6 (0x6) + .maxstack 8 + IL_0000: newobj instance void [mscorlib]System.NotImplementedException::.ctor() + IL_0005: throw + } // end of method CompoundAssignmentTest::GetArray + + .method public hidebysig instance int32 + GetValue(int32 'value') cil managed + { + // Code size 2 (0x2) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ret + } // end of method CompoundAssignmentTest::GetValue + + .method public hidebysig instance void + Int32_Local_Add(int32 i) cil managed + { + // Code size 44 (0x2c) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.1 + IL_0002: add + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: dup + IL_0007: ldc.i4.1 + IL_0008: add + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ldarg.1 + IL_0011: ldc.i4.1 + IL_0012: add + IL_0013: dup + IL_0014: starg.s i + IL_0016: call void [mscorlib]System.Console::WriteLine(int32) + IL_001b: ldarg.1 + IL_001c: ldc.i4.5 + IL_001d: add + IL_001e: starg.s i + IL_0020: ldarg.1 + IL_0021: ldc.i4.5 + IL_0022: add + IL_0023: dup + IL_0024: starg.s i + IL_0026: call void [mscorlib]System.Console::WriteLine(int32) + IL_002b: ret + } // end of method CompoundAssignmentTest::Int32_Local_Add + + .method public hidebysig instance void + Int32_Local_Sub(int32 i) cil managed + { + // Code size 44 (0x2c) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.1 + IL_0002: sub + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: dup + IL_0007: ldc.i4.1 + IL_0008: sub + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ldarg.1 + IL_0011: ldc.i4.1 + IL_0012: sub + IL_0013: dup + IL_0014: starg.s i + IL_0016: call void [mscorlib]System.Console::WriteLine(int32) + IL_001b: ldarg.1 + IL_001c: ldc.i4.5 + IL_001d: sub + IL_001e: starg.s i + IL_0020: ldarg.1 + IL_0021: ldc.i4.5 + IL_0022: sub + IL_0023: dup + IL_0024: starg.s i + IL_0026: call void [mscorlib]System.Console::WriteLine(int32) + IL_002b: ret + } // end of method CompoundAssignmentTest::Int32_Local_Sub + + .method public hidebysig instance void + Int32_Local_Mul(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: mul + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: mul + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_Mul + + .method public hidebysig instance void + Int32_Local_Div(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: div + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: div + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_Div + + .method public hidebysig instance void + Int32_Local_Rem(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: rem + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: rem + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_Rem + + .method public hidebysig instance void + Int32_Local_BitAnd(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: and + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: and + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_BitAnd + + .method public hidebysig instance void + Int32_Local_BitOr(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: or + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: or + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_BitOr + + .method public hidebysig instance void + Int32_Local_BitXor(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: xor + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: xor + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_BitXor + + .method public hidebysig instance void + Int32_Local_ShiftLeft(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: shl + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: shl + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_ShiftLeft + + .method public hidebysig instance void + Int32_Local_ShiftRight(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: shr + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: shr + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_ShiftRight + + .method public hidebysig instance void + IntegerWithInline(int32 i) cil managed + { + // Code size 18 (0x12) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: add + IL_0003: dup + IL_0004: starg.s i + IL_0006: call void [mscorlib]System.Console::WriteLine(int32) + IL_000b: ldarg.1 + IL_000c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0011: ret + } // end of method CompoundAssignmentTest::IntegerWithInline + + .method public hidebysig instance void + IntegerField(int32 i) cil managed + { + // Code size 67 (0x43) + .maxstack 3 + .locals init (int32 V_0, + int32 V_1) + IL_0000: ldarg.0 + IL_0001: dup + IL_0002: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_0007: ldarg.1 + IL_0008: add + IL_0009: dup + IL_000a: stloc.0 + IL_000b: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_0010: ldloc.0 + IL_0011: call void [mscorlib]System.Console::WriteLine(int32) + IL_0016: ldarg.0 + IL_0017: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_001c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0021: ldarg.0 + IL_0022: dup + IL_0023: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_0028: ldarg.1 + IL_0029: sub + IL_002a: dup + IL_002b: stloc.1 + IL_002c: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_0031: ldloc.1 + IL_0032: call void [mscorlib]System.Console::WriteLine(int32) + IL_0037: ldarg.0 + IL_0038: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_003d: call void [mscorlib]System.Console::WriteLine(int32) + IL_0042: ret + } // end of method CompoundAssignmentTest::IntegerField + + .method public hidebysig instance void + Array(int32 i) cil managed + { + // Code size 71 (0x47) + .maxstack 4 + .locals init (int32 V_0, + int32 V_1) + IL_0000: ldarg.0 + IL_0001: ldfld int32[] ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::array1 + IL_0006: ldarg.1 + IL_0007: ldelema [mscorlib]System.Int32 + IL_000c: dup + IL_000d: ldobj [mscorlib]System.Int32 + IL_0012: ldarg.1 + IL_0013: add + IL_0014: dup + IL_0015: stloc.0 + IL_0016: stobj [mscorlib]System.Int32 + IL_001b: ldloc.0 + IL_001c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0021: ldarg.0 + IL_0022: ldfld int32[] ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::array1 + IL_0027: ldarg.1 + IL_0028: ldc.i4.2 + IL_0029: mul + IL_002a: ldelema [mscorlib]System.Int32 + IL_002f: dup + IL_0030: ldobj [mscorlib]System.Int32 + IL_0035: ldarg.1 + IL_0036: ldc.i4.2 + IL_0037: mul + IL_0038: add + IL_0039: dup + IL_003a: stloc.1 + IL_003b: stobj [mscorlib]System.Int32 + IL_0040: ldloc.1 + IL_0041: call void [mscorlib]System.Console::WriteLine(int32) + IL_0046: ret + } // end of method CompoundAssignmentTest::Array + + .method public hidebysig instance int32 + ArrayUsageWithMethods() cil managed + { + // Code size 34 (0x22) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: call instance int32[] ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::GetArray() + IL_0006: ldarg.0 + IL_0007: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::GetIndex() + IL_000c: ldelema [mscorlib]System.Int32 + IL_0011: dup + IL_0012: ldobj [mscorlib]System.Int32 + IL_0017: dup + IL_0018: stloc.0 + IL_0019: ldc.i4.1 + IL_001a: add + IL_001b: stobj [mscorlib]System.Int32 + IL_0020: ldloc.0 + IL_0021: ret + } // end of method CompoundAssignmentTest::ArrayUsageWithMethods + + .method public hidebysig instance void + NestedField() cil managed + { + // Code size 41 (0x29) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: ldflda valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::field1 + IL_0006: ldfld bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer::HasIndex + IL_000b: brfalse.s IL_0028 + + IL_000d: ldarg.0 + IL_000e: ldflda valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::field1 + IL_0013: dup + IL_0014: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer::Field + IL_0019: dup + IL_001a: stloc.0 + IL_001b: ldc.i4.1 + IL_001c: add + IL_001d: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer::Field + IL_0022: ldloc.0 + IL_0023: call void [mscorlib]System.Console::WriteLine(int32) + IL_0028: ret + } // end of method CompoundAssignmentTest::NestedField + + .method public hidebysig instance void + Enum() cil managed + { + // Code size 30 (0x1e) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: dup + IL_0002: ldfld valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::enumField + IL_0007: ldc.i4.2 + IL_0008: or + IL_0009: stfld valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::enumField + IL_000e: ldarg.0 + IL_000f: dup + IL_0010: ldfld valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::enumField + IL_0015: ldc.i4.s -5 + IL_0017: and + IL_0018: stfld valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::enumField + IL_001d: ret + } // end of method CompoundAssignmentTest::Enum + + .method public hidebysig instance int32 + PreIncrementInAddition(int32 i, + int32 j) cil managed + { + // Code size 9 (0x9) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldarg.2 + IL_0002: ldc.i4.1 + IL_0003: add + IL_0004: dup + IL_0005: starg.s j + IL_0007: add + IL_0008: ret + } // end of method CompoundAssignmentTest::PreIncrementInAddition + + .method public hidebysig instance int32 + PreIncrementArrayElement(int32[] 'array', + int32 pos) cil managed + { + // Code size 24 (0x18) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.1 + IL_0001: ldarg.2 + IL_0002: ldelema [mscorlib]System.Int32 + IL_0007: dup + IL_0008: ldobj [mscorlib]System.Int32 + IL_000d: ldc.i4.1 + IL_000e: sub + IL_000f: dup + IL_0010: stloc.0 + IL_0011: stobj [mscorlib]System.Int32 + IL_0016: ldloc.0 + IL_0017: ret + } // end of method CompoundAssignmentTest::PreIncrementArrayElement + + .method public hidebysig instance int32 + PreIncrementInstanceField() cil managed + { + // Code size 23 (0x17) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::M() + IL_0006: dup + IL_0007: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::Field + IL_000c: ldc.i4.1 + IL_000d: add + IL_000e: dup + IL_000f: stloc.0 + IL_0010: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::Field + IL_0015: ldloc.0 + IL_0016: ret + } // end of method CompoundAssignmentTest::PreIncrementInstanceField + + .method public hidebysig instance int32 + PreIncrementInstanceField2(class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass m) cil managed + { + // Code size 18 (0x12) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.1 + IL_0001: dup + IL_0002: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::Field + IL_0007: ldc.i4.1 + IL_0008: add + IL_0009: dup + IL_000a: stloc.0 + IL_000b: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::Field + IL_0010: ldloc.0 + IL_0011: ret + } // end of method CompoundAssignmentTest::PreIncrementInstanceField2 + + .method public hidebysig instance int32 + PreIncrementInstanceProperty() cil managed + { + // Code size 23 (0x17) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::M() + IL_0006: dup + IL_0007: callvirt instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::get_Property() + IL_000c: ldc.i4.1 + IL_000d: add + IL_000e: dup + IL_000f: stloc.0 + IL_0010: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::set_Property(int32) + IL_0015: ldloc.0 + IL_0016: ret + } // end of method CompoundAssignmentTest::PreIncrementInstanceProperty + + .method public hidebysig instance int32 + PreIncrementStaticField() cil managed + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldsfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::StaticField + IL_0005: ldc.i4.1 + IL_0006: add + IL_0007: dup + IL_0008: stsfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::StaticField + IL_000d: ret + } // end of method CompoundAssignmentTest::PreIncrementStaticField + + .method public hidebysig instance int32 + PreIncrementStaticProperty() cil managed + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: call int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::get_StaticProperty() + IL_0005: ldc.i4.1 + IL_0006: add + IL_0007: dup + IL_0008: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::set_StaticProperty(int32) + IL_000d: ret + } // end of method CompoundAssignmentTest::PreIncrementStaticProperty + + .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 CompoundAssignmentTest::.ctor + + .property int32 StaticProperty() + { + .get int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::get_StaticProperty() + .set void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::set_StaticProperty(int32) + } // end of property CompoundAssignmentTest::StaticProperty +} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** +// WARNING: Created Win32 resource file ../../Tests/TestCases/Pretty\CompoundAssignmentTest.opt.res diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.opt.roslyn.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.opt.roslyn.il new file mode 100644 index 000000000..11b46e394 --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.opt.roslyn.il @@ -0,0 +1,728 @@ + +// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.18020 +// 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 CompoundAssignmentTest +{ + .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. + + // --- The following custom attribute is added automatically, do not uncomment ------- + // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 ) + + .permissionset reqmin + = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}} + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.module CompoundAssignmentTest.dll +// MVID: {4291E75E-F92B-4A69-AD59-40A9D8C6DF95} +.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: 0x00A00000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest + extends [mscorlib]System.Object +{ + .class auto ansi sealed nested private MyEnum + extends [mscorlib]System.Enum + { + .custom instance void [mscorlib]System.FlagsAttribute::.ctor() = ( 01 00 00 00 ) + .field public specialname rtspecialname int32 value__ + .field public static literal valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum None = int32(0x00000000) + .field public static literal valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum One = int32(0x00000001) + .field public static literal valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum Two = int32(0x00000002) + .field public static literal valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum Four = int32(0x00000004) + } // end of class MyEnum + + .class sequential ansi sealed nested private beforefieldinit StructContainer + extends [mscorlib]System.ValueType + { + .field public bool HasIndex + .field public int32 Field + } // end of class StructContainer + + .class auto ansi nested public beforefieldinit MutableClass + extends [mscorlib]System.Object + { + .custom instance void [mscorlib]System.Reflection.DefaultMemberAttribute::.ctor(string) = ( 01 00 04 49 74 65 6D 00 00 ) // ...Item.. + .field public int32 Field + .field private int32 'k__BackingField' + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .method public hidebysig specialname + instance int32 get_Property() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::'k__BackingField' + IL_0006: ret + } // end of method MutableClass::get_Property + + .method public hidebysig specialname + instance void set_Property(int32 'value') cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 8 (0x8) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::'k__BackingField' + IL_0007: ret + } // end of method MutableClass::set_Property + + .method public hidebysig specialname + instance uint32 get_Item(string name) cil managed + { + // Code size 2 (0x2) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: ret + } // end of method MutableClass::get_Item + + .method public hidebysig specialname + instance void set_Item(string name, + uint32 'value') cil managed + { + // Code size 1 (0x1) + .maxstack 8 + IL_0000: ret + } // end of method MutableClass::set_Item + + .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 MutableClass::.ctor + + .property instance int32 Property() + { + .get instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::get_Property() + .set instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::set_Property(int32) + } // end of property MutableClass::Property + .property instance uint32 Item(string) + { + .get instance uint32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::get_Item(string) + .set instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::set_Item(string, + uint32) + } // end of property MutableClass::Item + } // end of class MutableClass + + .field private int32 test1 + .field private int32[] array1 + .field private valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer field1 + .field private valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum enumField + .field public static int32 StaticField + .field private static int32 'k__BackingField' + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .method public hidebysig specialname static + int32 get_StaticProperty() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 6 (0x6) + .maxstack 8 + IL_0000: ldsfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::'k__BackingField' + IL_0005: ret + } // end of method CompoundAssignmentTest::get_StaticProperty + + .method public hidebysig specialname static + void set_StaticProperty(int32 'value') cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: stsfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::'k__BackingField' + IL_0006: ret + } // end of method CompoundAssignmentTest::set_StaticProperty + + .method private hidebysig instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass + M() cil managed + { + // Code size 6 (0x6) + .maxstack 8 + IL_0000: newobj instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::.ctor() + IL_0005: ret + } // end of method CompoundAssignmentTest::M + + .method private hidebysig instance int32[0...,0...] + Array() cil managed + { + // Code size 2 (0x2) + .maxstack 8 + IL_0000: ldnull + IL_0001: ret + } // end of method CompoundAssignmentTest::Array + + .method private hidebysig instance int32* + GetPointer() cil managed + { + // Code size 3 (0x3) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: conv.u + IL_0002: ret + } // end of method CompoundAssignmentTest::GetPointer + + .method public hidebysig instance int32 + GetIndex() cil managed + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: newobj instance void [mscorlib]System.Random::.ctor() + IL_0005: ldc.i4.0 + IL_0006: ldc.i4.s 100 + IL_0008: callvirt instance int32 [mscorlib]System.Random::Next(int32, + int32) + IL_000d: ret + } // end of method CompoundAssignmentTest::GetIndex + + .method public hidebysig instance int32[] + GetArray() cil managed + { + // Code size 6 (0x6) + .maxstack 8 + IL_0000: newobj instance void [mscorlib]System.NotImplementedException::.ctor() + IL_0005: throw + } // end of method CompoundAssignmentTest::GetArray + + .method public hidebysig instance int32 + GetValue(int32 'value') cil managed + { + // Code size 2 (0x2) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ret + } // end of method CompoundAssignmentTest::GetValue + + .method public hidebysig instance void + Int32_Local_Add(int32 i) cil managed + { + // Code size 44 (0x2c) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.1 + IL_0002: add + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: dup + IL_0007: ldc.i4.1 + IL_0008: add + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ldarg.1 + IL_0011: ldc.i4.1 + IL_0012: add + IL_0013: dup + IL_0014: starg.s i + IL_0016: call void [mscorlib]System.Console::WriteLine(int32) + IL_001b: ldarg.1 + IL_001c: ldc.i4.5 + IL_001d: add + IL_001e: starg.s i + IL_0020: ldarg.1 + IL_0021: ldc.i4.5 + IL_0022: add + IL_0023: dup + IL_0024: starg.s i + IL_0026: call void [mscorlib]System.Console::WriteLine(int32) + IL_002b: ret + } // end of method CompoundAssignmentTest::Int32_Local_Add + + .method public hidebysig instance void + Int32_Local_Sub(int32 i) cil managed + { + // Code size 44 (0x2c) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.1 + IL_0002: sub + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: dup + IL_0007: ldc.i4.1 + IL_0008: sub + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ldarg.1 + IL_0011: ldc.i4.1 + IL_0012: sub + IL_0013: dup + IL_0014: starg.s i + IL_0016: call void [mscorlib]System.Console::WriteLine(int32) + IL_001b: ldarg.1 + IL_001c: ldc.i4.5 + IL_001d: sub + IL_001e: starg.s i + IL_0020: ldarg.1 + IL_0021: ldc.i4.5 + IL_0022: sub + IL_0023: dup + IL_0024: starg.s i + IL_0026: call void [mscorlib]System.Console::WriteLine(int32) + IL_002b: ret + } // end of method CompoundAssignmentTest::Int32_Local_Sub + + .method public hidebysig instance void + Int32_Local_Mul(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: mul + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: mul + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_Mul + + .method public hidebysig instance void + Int32_Local_Div(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: div + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: div + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_Div + + .method public hidebysig instance void + Int32_Local_Rem(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: rem + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: rem + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_Rem + + .method public hidebysig instance void + Int32_Local_BitAnd(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: and + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: and + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_BitAnd + + .method public hidebysig instance void + Int32_Local_BitOr(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: or + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: or + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_BitOr + + .method public hidebysig instance void + Int32_Local_BitXor(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: xor + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: xor + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_BitXor + + .method public hidebysig instance void + Int32_Local_ShiftLeft(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: shl + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: shl + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_ShiftLeft + + .method public hidebysig instance void + Int32_Local_ShiftRight(int32 i) cil managed + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: shr + IL_0003: starg.s i + IL_0005: ldarg.1 + IL_0006: ldc.i4.5 + IL_0007: shr + IL_0008: dup + IL_0009: starg.s i + IL_000b: call void [mscorlib]System.Console::WriteLine(int32) + IL_0010: ret + } // end of method CompoundAssignmentTest::Int32_Local_ShiftRight + + .method public hidebysig instance void + IntegerWithInline(int32 i) cil managed + { + // Code size 18 (0x12) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldc.i4.5 + IL_0002: add + IL_0003: dup + IL_0004: starg.s i + IL_0006: call void [mscorlib]System.Console::WriteLine(int32) + IL_000b: ldarg.1 + IL_000c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0011: ret + } // end of method CompoundAssignmentTest::IntegerWithInline + + .method public hidebysig instance void + IntegerField(int32 i) cil managed + { + // Code size 67 (0x43) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: ldarg.0 + IL_0002: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_0007: ldarg.1 + IL_0008: add + IL_0009: dup + IL_000a: stloc.0 + IL_000b: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_0010: ldloc.0 + IL_0011: call void [mscorlib]System.Console::WriteLine(int32) + IL_0016: ldarg.0 + IL_0017: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_001c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0021: ldarg.0 + IL_0022: ldarg.0 + IL_0023: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_0028: ldarg.1 + IL_0029: sub + IL_002a: dup + IL_002b: stloc.0 + IL_002c: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_0031: ldloc.0 + IL_0032: call void [mscorlib]System.Console::WriteLine(int32) + IL_0037: ldarg.0 + IL_0038: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_003d: call void [mscorlib]System.Console::WriteLine(int32) + IL_0042: ret + } // end of method CompoundAssignmentTest::IntegerField + + .method public hidebysig instance void + Array(int32 i) cil managed + { + // Code size 55 (0x37) + .maxstack 4 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: ldfld int32[] ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::array1 + IL_0006: ldarg.1 + IL_0007: ldelema [mscorlib]System.Int32 + IL_000c: dup + IL_000d: ldind.i4 + IL_000e: ldarg.1 + IL_000f: add + IL_0010: dup + IL_0011: stloc.0 + IL_0012: stind.i4 + IL_0013: ldloc.0 + IL_0014: call void [mscorlib]System.Console::WriteLine(int32) + IL_0019: ldarg.0 + IL_001a: ldfld int32[] ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::array1 + IL_001f: ldarg.1 + IL_0020: ldc.i4.2 + IL_0021: mul + IL_0022: ldelema [mscorlib]System.Int32 + IL_0027: dup + IL_0028: ldind.i4 + IL_0029: ldarg.1 + IL_002a: ldc.i4.2 + IL_002b: mul + IL_002c: add + IL_002d: dup + IL_002e: stloc.0 + IL_002f: stind.i4 + IL_0030: ldloc.0 + IL_0031: call void [mscorlib]System.Console::WriteLine(int32) + IL_0036: ret + } // end of method CompoundAssignmentTest::Array + + .method public hidebysig instance int32 + ArrayUsageWithMethods() cil managed + { + // Code size 26 (0x1a) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: call instance int32[] ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::GetArray() + IL_0006: ldarg.0 + IL_0007: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::GetIndex() + IL_000c: ldelema [mscorlib]System.Int32 + IL_0011: dup + IL_0012: ldind.i4 + IL_0013: stloc.0 + IL_0014: ldloc.0 + IL_0015: ldc.i4.1 + IL_0016: add + IL_0017: stind.i4 + IL_0018: ldloc.0 + IL_0019: ret + } // end of method CompoundAssignmentTest::ArrayUsageWithMethods + + .method public hidebysig instance void + NestedField() cil managed + { + // Code size 38 (0x26) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: ldflda valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::field1 + IL_0006: ldfld bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer::HasIndex + IL_000b: brfalse.s IL_0025 + + IL_000d: ldarg.0 + IL_000e: ldflda valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::field1 + IL_0013: ldflda int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer::Field + IL_0018: dup + IL_0019: ldind.i4 + IL_001a: stloc.0 + IL_001b: ldloc.0 + IL_001c: ldc.i4.1 + IL_001d: add + IL_001e: stind.i4 + IL_001f: ldloc.0 + IL_0020: call void [mscorlib]System.Console::WriteLine(int32) + IL_0025: ret + } // end of method CompoundAssignmentTest::NestedField + + .method public hidebysig instance void + Enum() cil managed + { + // Code size 30 (0x1e) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.0 + IL_0002: ldfld valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::enumField + IL_0007: ldc.i4.2 + IL_0008: or + IL_0009: stfld valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::enumField + IL_000e: ldarg.0 + IL_000f: ldarg.0 + IL_0010: ldfld valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::enumField + IL_0015: ldc.i4.s -5 + IL_0017: and + IL_0018: stfld valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::enumField + IL_001d: ret + } // end of method CompoundAssignmentTest::Enum + + .method public hidebysig instance int32 + PreIncrementInAddition(int32 i, + int32 j) cil managed + { + // Code size 9 (0x9) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ldarg.2 + IL_0002: ldc.i4.1 + IL_0003: add + IL_0004: dup + IL_0005: starg.s j + IL_0007: add + IL_0008: ret + } // end of method CompoundAssignmentTest::PreIncrementInAddition + + .method public hidebysig instance int32 + PreIncrementArrayElement(int32[] 'array', + int32 pos) cil managed + { + // Code size 16 (0x10) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.1 + IL_0001: ldarg.2 + IL_0002: ldelema [mscorlib]System.Int32 + IL_0007: dup + IL_0008: ldind.i4 + IL_0009: ldc.i4.1 + IL_000a: sub + IL_000b: stloc.0 + IL_000c: ldloc.0 + IL_000d: stind.i4 + IL_000e: ldloc.0 + IL_000f: ret + } // end of method CompoundAssignmentTest::PreIncrementArrayElement + + .method public hidebysig instance int32 + PreIncrementInstanceField() cil managed + { + // Code size 23 (0x17) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::M() + IL_0006: dup + IL_0007: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::Field + IL_000c: ldc.i4.1 + IL_000d: add + IL_000e: stloc.0 + IL_000f: ldloc.0 + IL_0010: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::Field + IL_0015: ldloc.0 + IL_0016: ret + } // end of method CompoundAssignmentTest::PreIncrementInstanceField + + .method public hidebysig instance int32 + PreIncrementInstanceField2(class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass m) cil managed + { + // Code size 18 (0x12) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.1 + IL_0001: dup + IL_0002: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::Field + IL_0007: ldc.i4.1 + IL_0008: add + IL_0009: stloc.0 + IL_000a: ldloc.0 + IL_000b: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::Field + IL_0010: ldloc.0 + IL_0011: ret + } // end of method CompoundAssignmentTest::PreIncrementInstanceField2 + + .method public hidebysig instance int32 + PreIncrementInstanceProperty() cil managed + { + // Code size 23 (0x17) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::M() + IL_0006: dup + IL_0007: callvirt instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::get_Property() + IL_000c: ldc.i4.1 + IL_000d: add + IL_000e: stloc.0 + IL_000f: ldloc.0 + IL_0010: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::set_Property(int32) + IL_0015: ldloc.0 + IL_0016: ret + } // end of method CompoundAssignmentTest::PreIncrementInstanceProperty + + .method public hidebysig instance int32 + PreIncrementStaticField() cil managed + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldsfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::StaticField + IL_0005: ldc.i4.1 + IL_0006: add + IL_0007: dup + IL_0008: stsfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::StaticField + IL_000d: ret + } // end of method CompoundAssignmentTest::PreIncrementStaticField + + .method public hidebysig instance int32 + PreIncrementStaticProperty() cil managed + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: call int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::get_StaticProperty() + IL_0005: ldc.i4.1 + IL_0006: add + IL_0007: dup + IL_0008: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::set_StaticProperty(int32) + IL_000d: ret + } // end of method CompoundAssignmentTest::PreIncrementStaticProperty + + .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 CompoundAssignmentTest::.ctor + + .property int32 StaticProperty() + { + .get int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::get_StaticProperty() + .set void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::set_StaticProperty(int32) + } // end of property CompoundAssignmentTest::StaticProperty +} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.roslyn.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.roslyn.il new file mode 100644 index 000000000..202b53615 --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/CompoundAssignmentTest.roslyn.il @@ -0,0 +1,863 @@ + +// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.18020 +// 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 CompoundAssignmentTest +{ + .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. + + // --- The following custom attribute is added automatically, do not uncomment ------- + // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 07 01 00 00 00 00 ) + + .permissionset reqmin + = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}} + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.module CompoundAssignmentTest.dll +// MVID: {FF19A157-76FD-4795-BA24-7C956CED48C1} +.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: 0x00EE0000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest + extends [mscorlib]System.Object +{ + .class auto ansi sealed nested private MyEnum + extends [mscorlib]System.Enum + { + .custom instance void [mscorlib]System.FlagsAttribute::.ctor() = ( 01 00 00 00 ) + .field public specialname rtspecialname int32 value__ + .field public static literal valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum None = int32(0x00000000) + .field public static literal valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum One = int32(0x00000001) + .field public static literal valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum Two = int32(0x00000002) + .field public static literal valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum Four = int32(0x00000004) + } // end of class MyEnum + + .class sequential ansi sealed nested private beforefieldinit StructContainer + extends [mscorlib]System.ValueType + { + .field public bool HasIndex + .field public int32 Field + } // end of class StructContainer + + .class auto ansi nested public beforefieldinit MutableClass + extends [mscorlib]System.Object + { + .custom instance void [mscorlib]System.Reflection.DefaultMemberAttribute::.ctor(string) = ( 01 00 04 49 74 65 6D 00 00 ) // ...Item.. + .field public int32 Field + .field private int32 'k__BackingField' + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .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 + instance int32 get_Property() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::'k__BackingField' + IL_0006: ret + } // end of method MutableClass::get_Property + + .method public hidebysig specialname + instance void set_Property(int32 'value') cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 8 (0x8) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::'k__BackingField' + IL_0007: ret + } // end of method MutableClass::set_Property + + .method public hidebysig specialname + instance uint32 get_Item(string name) cil managed + { + // Code size 7 (0x7) + .maxstack 1 + .locals init (uint32 V_0) + IL_0000: nop + IL_0001: ldc.i4.0 + IL_0002: stloc.0 + IL_0003: br.s IL_0005 + + IL_0005: ldloc.0 + IL_0006: ret + } // end of method MutableClass::get_Item + + .method public hidebysig specialname + instance void set_Item(string name, + uint32 'value') cil managed + { + // Code size 2 (0x2) + .maxstack 8 + IL_0000: nop + IL_0001: ret + } // end of method MutableClass::set_Item + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 8 (0x8) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: nop + IL_0007: ret + } // end of method MutableClass::.ctor + + .property instance int32 Property() + { + .get instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::get_Property() + .set instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::set_Property(int32) + } // end of property MutableClass::Property + .property instance uint32 Item(string) + { + .get instance uint32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::get_Item(string) + .set instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::set_Item(string, + uint32) + } // end of property MutableClass::Item + } // end of class MutableClass + + .field private int32 test1 + .field private int32[] array1 + .field private valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer field1 + .field private valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum enumField + .field public static int32 StaticField + .field private static int32 'k__BackingField' + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .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 static + int32 get_StaticProperty() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 6 (0x6) + .maxstack 8 + IL_0000: ldsfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::'k__BackingField' + IL_0005: ret + } // end of method CompoundAssignmentTest::get_StaticProperty + + .method public hidebysig specialname static + void set_StaticProperty(int32 'value') cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: stsfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::'k__BackingField' + IL_0006: ret + } // end of method CompoundAssignmentTest::set_StaticProperty + + .method private hidebysig instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass + M() cil managed + { + // Code size 11 (0xb) + .maxstack 1 + .locals init (class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass V_0) + IL_0000: nop + IL_0001: newobj instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::.ctor() + IL_0006: stloc.0 + IL_0007: br.s IL_0009 + + IL_0009: ldloc.0 + IL_000a: ret + } // end of method CompoundAssignmentTest::M + + .method private hidebysig instance int32[0...,0...] + Array() cil managed + { + // Code size 7 (0x7) + .maxstack 1 + .locals init (int32[0...,0...] V_0) + IL_0000: nop + IL_0001: ldnull + IL_0002: stloc.0 + IL_0003: br.s IL_0005 + + IL_0005: ldloc.0 + IL_0006: ret + } // end of method CompoundAssignmentTest::Array + + .method private hidebysig instance int32* + GetPointer() cil managed + { + // Code size 8 (0x8) + .maxstack 1 + .locals init (int32* V_0) + IL_0000: nop + IL_0001: ldc.i4.0 + IL_0002: conv.u + IL_0003: stloc.0 + IL_0004: br.s IL_0006 + + IL_0006: ldloc.0 + IL_0007: ret + } // end of method CompoundAssignmentTest::GetPointer + + .method public hidebysig instance int32 + GetIndex() cil managed + { + // Code size 19 (0x13) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: nop + IL_0001: newobj instance void [mscorlib]System.Random::.ctor() + IL_0006: ldc.i4.0 + IL_0007: ldc.i4.s 100 + IL_0009: callvirt instance int32 [mscorlib]System.Random::Next(int32, + int32) + IL_000e: stloc.0 + IL_000f: br.s IL_0011 + + IL_0011: ldloc.0 + IL_0012: ret + } // end of method CompoundAssignmentTest::GetIndex + + .method public hidebysig instance int32[] + GetArray() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: nop + IL_0001: newobj instance void [mscorlib]System.NotImplementedException::.ctor() + IL_0006: throw + } // end of method CompoundAssignmentTest::GetArray + + .method public hidebysig instance int32 + GetValue(int32 'value') cil managed + { + // Code size 7 (0x7) + .maxstack 1 + .locals init (int32 V_0) + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: stloc.0 + IL_0003: br.s IL_0005 + + IL_0005: ldloc.0 + IL_0006: ret + } // end of method CompoundAssignmentTest::GetValue + + .method public hidebysig instance void + Int32_Local_Add(int32 i) cil managed + { + // Code size 48 (0x30) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldc.i4.1 + IL_0003: add + IL_0004: starg.s i + IL_0006: ldarg.1 + IL_0007: dup + IL_0008: ldc.i4.1 + IL_0009: add + IL_000a: starg.s i + IL_000c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0011: nop + IL_0012: ldarg.1 + IL_0013: ldc.i4.1 + IL_0014: add + IL_0015: dup + IL_0016: starg.s i + IL_0018: call void [mscorlib]System.Console::WriteLine(int32) + IL_001d: nop + IL_001e: ldarg.1 + IL_001f: ldc.i4.5 + IL_0020: add + IL_0021: starg.s i + IL_0023: ldarg.1 + IL_0024: ldc.i4.5 + IL_0025: add + IL_0026: dup + IL_0027: starg.s i + IL_0029: call void [mscorlib]System.Console::WriteLine(int32) + IL_002e: nop + IL_002f: ret + } // end of method CompoundAssignmentTest::Int32_Local_Add + + .method public hidebysig instance void + Int32_Local_Sub(int32 i) cil managed + { + // Code size 48 (0x30) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldc.i4.1 + IL_0003: sub + IL_0004: starg.s i + IL_0006: ldarg.1 + IL_0007: dup + IL_0008: ldc.i4.1 + IL_0009: sub + IL_000a: starg.s i + IL_000c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0011: nop + IL_0012: ldarg.1 + IL_0013: ldc.i4.1 + IL_0014: sub + IL_0015: dup + IL_0016: starg.s i + IL_0018: call void [mscorlib]System.Console::WriteLine(int32) + IL_001d: nop + IL_001e: ldarg.1 + IL_001f: ldc.i4.5 + IL_0020: sub + IL_0021: starg.s i + IL_0023: ldarg.1 + IL_0024: ldc.i4.5 + IL_0025: sub + IL_0026: dup + IL_0027: starg.s i + IL_0029: call void [mscorlib]System.Console::WriteLine(int32) + IL_002e: nop + IL_002f: ret + } // end of method CompoundAssignmentTest::Int32_Local_Sub + + .method public hidebysig instance void + Int32_Local_Mul(int32 i) cil managed + { + // Code size 19 (0x13) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldc.i4.5 + IL_0003: mul + IL_0004: starg.s i + IL_0006: ldarg.1 + IL_0007: ldc.i4.5 + IL_0008: mul + IL_0009: dup + IL_000a: starg.s i + IL_000c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0011: nop + IL_0012: ret + } // end of method CompoundAssignmentTest::Int32_Local_Mul + + .method public hidebysig instance void + Int32_Local_Div(int32 i) cil managed + { + // Code size 19 (0x13) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldc.i4.5 + IL_0003: div + IL_0004: starg.s i + IL_0006: ldarg.1 + IL_0007: ldc.i4.5 + IL_0008: div + IL_0009: dup + IL_000a: starg.s i + IL_000c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0011: nop + IL_0012: ret + } // end of method CompoundAssignmentTest::Int32_Local_Div + + .method public hidebysig instance void + Int32_Local_Rem(int32 i) cil managed + { + // Code size 19 (0x13) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldc.i4.5 + IL_0003: rem + IL_0004: starg.s i + IL_0006: ldarg.1 + IL_0007: ldc.i4.5 + IL_0008: rem + IL_0009: dup + IL_000a: starg.s i + IL_000c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0011: nop + IL_0012: ret + } // end of method CompoundAssignmentTest::Int32_Local_Rem + + .method public hidebysig instance void + Int32_Local_BitAnd(int32 i) cil managed + { + // Code size 19 (0x13) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldc.i4.5 + IL_0003: and + IL_0004: starg.s i + IL_0006: ldarg.1 + IL_0007: ldc.i4.5 + IL_0008: and + IL_0009: dup + IL_000a: starg.s i + IL_000c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0011: nop + IL_0012: ret + } // end of method CompoundAssignmentTest::Int32_Local_BitAnd + + .method public hidebysig instance void + Int32_Local_BitOr(int32 i) cil managed + { + // Code size 19 (0x13) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldc.i4.5 + IL_0003: or + IL_0004: starg.s i + IL_0006: ldarg.1 + IL_0007: ldc.i4.5 + IL_0008: or + IL_0009: dup + IL_000a: starg.s i + IL_000c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0011: nop + IL_0012: ret + } // end of method CompoundAssignmentTest::Int32_Local_BitOr + + .method public hidebysig instance void + Int32_Local_BitXor(int32 i) cil managed + { + // Code size 19 (0x13) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldc.i4.5 + IL_0003: xor + IL_0004: starg.s i + IL_0006: ldarg.1 + IL_0007: ldc.i4.5 + IL_0008: xor + IL_0009: dup + IL_000a: starg.s i + IL_000c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0011: nop + IL_0012: ret + } // end of method CompoundAssignmentTest::Int32_Local_BitXor + + .method public hidebysig instance void + Int32_Local_ShiftLeft(int32 i) cil managed + { + // Code size 19 (0x13) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldc.i4.5 + IL_0003: shl + IL_0004: starg.s i + IL_0006: ldarg.1 + IL_0007: ldc.i4.5 + IL_0008: shl + IL_0009: dup + IL_000a: starg.s i + IL_000c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0011: nop + IL_0012: ret + } // end of method CompoundAssignmentTest::Int32_Local_ShiftLeft + + .method public hidebysig instance void + Int32_Local_ShiftRight(int32 i) cil managed + { + // Code size 19 (0x13) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldc.i4.5 + IL_0003: shr + IL_0004: starg.s i + IL_0006: ldarg.1 + IL_0007: ldc.i4.5 + IL_0008: shr + IL_0009: dup + IL_000a: starg.s i + IL_000c: call void [mscorlib]System.Console::WriteLine(int32) + IL_0011: nop + IL_0012: ret + } // end of method CompoundAssignmentTest::Int32_Local_ShiftRight + + .method public hidebysig instance void + IntegerWithInline(int32 i) cil managed + { + // Code size 21 (0x15) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldc.i4.5 + IL_0003: add + IL_0004: dup + IL_0005: starg.s i + IL_0007: call void [mscorlib]System.Console::WriteLine(int32) + IL_000c: nop + IL_000d: ldarg.1 + IL_000e: call void [mscorlib]System.Console::WriteLine(int32) + IL_0013: nop + IL_0014: ret + } // end of method CompoundAssignmentTest::IntegerWithInline + + .method public hidebysig instance void + IntegerField(int32 i) cil managed + { + // Code size 72 (0x48) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldarg.0 + IL_0003: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_0008: ldarg.1 + IL_0009: add + IL_000a: dup + IL_000b: stloc.0 + IL_000c: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_0011: ldloc.0 + IL_0012: call void [mscorlib]System.Console::WriteLine(int32) + IL_0017: nop + IL_0018: ldarg.0 + IL_0019: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_001e: call void [mscorlib]System.Console::WriteLine(int32) + IL_0023: nop + IL_0024: ldarg.0 + IL_0025: ldarg.0 + IL_0026: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_002b: ldarg.1 + IL_002c: sub + IL_002d: dup + IL_002e: stloc.0 + IL_002f: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_0034: ldloc.0 + IL_0035: call void [mscorlib]System.Console::WriteLine(int32) + IL_003a: nop + IL_003b: ldarg.0 + IL_003c: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::test1 + IL_0041: call void [mscorlib]System.Console::WriteLine(int32) + IL_0046: nop + IL_0047: ret + } // end of method CompoundAssignmentTest::IntegerField + + .method public hidebysig instance void + Array(int32 i) cil managed + { + // Code size 58 (0x3a) + .maxstack 4 + .locals init (int32 V_0) + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldfld int32[] ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::array1 + IL_0007: ldarg.1 + IL_0008: ldelema [mscorlib]System.Int32 + IL_000d: dup + IL_000e: ldind.i4 + IL_000f: ldarg.1 + IL_0010: add + IL_0011: dup + IL_0012: stloc.0 + IL_0013: stind.i4 + IL_0014: ldloc.0 + IL_0015: call void [mscorlib]System.Console::WriteLine(int32) + IL_001a: nop + IL_001b: ldarg.0 + IL_001c: ldfld int32[] ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::array1 + IL_0021: ldarg.1 + IL_0022: ldc.i4.2 + IL_0023: mul + IL_0024: ldelema [mscorlib]System.Int32 + IL_0029: dup + IL_002a: ldind.i4 + IL_002b: ldarg.1 + IL_002c: ldc.i4.2 + IL_002d: mul + IL_002e: add + IL_002f: dup + IL_0030: stloc.0 + IL_0031: stind.i4 + IL_0032: ldloc.0 + IL_0033: call void [mscorlib]System.Console::WriteLine(int32) + IL_0038: nop + IL_0039: ret + } // end of method CompoundAssignmentTest::Array + + .method public hidebysig instance int32 + ArrayUsageWithMethods() cil managed + { + // Code size 31 (0x1f) + .maxstack 3 + .locals init (int32 V_0, + int32 V_1) + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: call instance int32[] ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::GetArray() + IL_0007: ldarg.0 + IL_0008: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::GetIndex() + IL_000d: ldelema [mscorlib]System.Int32 + IL_0012: dup + IL_0013: ldind.i4 + IL_0014: stloc.0 + IL_0015: ldloc.0 + IL_0016: ldc.i4.1 + IL_0017: add + IL_0018: stind.i4 + IL_0019: ldloc.0 + IL_001a: stloc.1 + IL_001b: br.s IL_001d + + IL_001d: ldloc.1 + IL_001e: ret + } // end of method CompoundAssignmentTest::ArrayUsageWithMethods + + .method public hidebysig instance void + NestedField() cil managed + { + // Code size 44 (0x2c) + .maxstack 3 + .locals init (bool V_0, + int32 V_1) + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldflda valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::field1 + IL_0007: ldfld bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer::HasIndex + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: brfalse.s IL_002b + + IL_0010: nop + IL_0011: ldarg.0 + IL_0012: ldflda valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::field1 + IL_0017: ldflda int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/StructContainer::Field + IL_001c: dup + IL_001d: ldind.i4 + IL_001e: stloc.1 + IL_001f: ldloc.1 + IL_0020: ldc.i4.1 + IL_0021: add + IL_0022: stind.i4 + IL_0023: ldloc.1 + IL_0024: call void [mscorlib]System.Console::WriteLine(int32) + IL_0029: nop + IL_002a: nop + IL_002b: ret + } // end of method CompoundAssignmentTest::NestedField + + .method public hidebysig instance void + Enum() cil managed + { + // Code size 31 (0x1f) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldarg.0 + IL_0003: ldfld valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::enumField + IL_0008: ldc.i4.2 + IL_0009: or + IL_000a: stfld valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::enumField + IL_000f: ldarg.0 + IL_0010: ldarg.0 + IL_0011: ldfld valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::enumField + IL_0016: ldc.i4.s -5 + IL_0018: and + IL_0019: stfld valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MyEnum ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::enumField + IL_001e: ret + } // end of method CompoundAssignmentTest::Enum + + .method public hidebysig instance int32 + PreIncrementInAddition(int32 i, + int32 j) cil managed + { + // Code size 14 (0xe) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldarg.2 + IL_0003: ldc.i4.1 + IL_0004: add + IL_0005: dup + IL_0006: starg.s j + IL_0008: add + IL_0009: stloc.0 + IL_000a: br.s IL_000c + + IL_000c: ldloc.0 + IL_000d: ret + } // end of method CompoundAssignmentTest::PreIncrementInAddition + + .method public hidebysig instance int32 + PreIncrementArrayElement(int32[] 'array', + int32 pos) cil managed + { + // Code size 21 (0x15) + .maxstack 3 + .locals init (int32 V_0, + int32 V_1) + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: ldarg.2 + IL_0003: ldelema [mscorlib]System.Int32 + IL_0008: dup + IL_0009: ldind.i4 + IL_000a: ldc.i4.1 + IL_000b: sub + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: stind.i4 + IL_000f: ldloc.0 + IL_0010: stloc.1 + IL_0011: br.s IL_0013 + + IL_0013: ldloc.1 + IL_0014: ret + } // end of method CompoundAssignmentTest::PreIncrementArrayElement + + .method public hidebysig instance int32 + PreIncrementInstanceField() cil managed + { + // Code size 28 (0x1c) + .maxstack 3 + .locals init (int32 V_0, + int32 V_1) + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::M() + IL_0007: dup + IL_0008: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::Field + IL_000d: ldc.i4.1 + IL_000e: add + IL_000f: stloc.0 + IL_0010: ldloc.0 + IL_0011: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::Field + IL_0016: ldloc.0 + IL_0017: stloc.1 + IL_0018: br.s IL_001a + + IL_001a: ldloc.1 + IL_001b: ret + } // end of method CompoundAssignmentTest::PreIncrementInstanceField + + .method public hidebysig instance int32 + PreIncrementInstanceField2(class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass m) cil managed + { + // Code size 23 (0x17) + .maxstack 3 + .locals init (int32 V_0, + int32 V_1) + IL_0000: nop + IL_0001: ldarg.1 + IL_0002: dup + IL_0003: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::Field + IL_0008: ldc.i4.1 + IL_0009: add + IL_000a: stloc.0 + IL_000b: ldloc.0 + IL_000c: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::Field + IL_0011: ldloc.0 + IL_0012: stloc.1 + IL_0013: br.s IL_0015 + + IL_0015: ldloc.1 + IL_0016: ret + } // end of method CompoundAssignmentTest::PreIncrementInstanceField2 + + .method public hidebysig instance int32 + PreIncrementInstanceProperty() cil managed + { + // Code size 29 (0x1d) + .maxstack 3 + .locals init (int32 V_0, + int32 V_1) + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::M() + IL_0007: dup + IL_0008: callvirt instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::get_Property() + IL_000d: ldc.i4.1 + IL_000e: add + IL_000f: stloc.0 + IL_0010: ldloc.0 + IL_0011: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest/MutableClass::set_Property(int32) + IL_0016: nop + IL_0017: ldloc.0 + IL_0018: stloc.1 + IL_0019: br.s IL_001b + + IL_001b: ldloc.1 + IL_001c: ret + } // end of method CompoundAssignmentTest::PreIncrementInstanceProperty + + .method public hidebysig instance int32 + PreIncrementStaticField() cil managed + { + // Code size 19 (0x13) + .maxstack 2 + .locals init (int32 V_0) + IL_0000: nop + IL_0001: ldsfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::StaticField + IL_0006: ldc.i4.1 + IL_0007: add + IL_0008: dup + IL_0009: stsfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::StaticField + IL_000e: stloc.0 + IL_000f: br.s IL_0011 + + IL_0011: ldloc.0 + IL_0012: ret + } // end of method CompoundAssignmentTest::PreIncrementStaticField + + .method public hidebysig instance int32 + PreIncrementStaticProperty() cil managed + { + // Code size 20 (0x14) + .maxstack 2 + .locals init (int32 V_0) + IL_0000: nop + IL_0001: call int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::get_StaticProperty() + IL_0006: ldc.i4.1 + IL_0007: add + IL_0008: dup + IL_0009: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::set_StaticProperty(int32) + IL_000e: nop + IL_000f: stloc.0 + IL_0010: br.s IL_0012 + + IL_0012: ldloc.0 + IL_0013: ret + } // end of method CompoundAssignmentTest::PreIncrementStaticProperty + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 8 (0x8) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: nop + IL_0007: ret + } // end of method CompoundAssignmentTest::.ctor + + .property int32 StaticProperty() + { + .get int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::get_StaticProperty() + .set void ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest::set_StaticProperty(int32) + } // end of property CompoundAssignmentTest::StaticProperty +} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CompoundAssignmentTest + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/HelloWorld.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/HelloWorld.il index be1b80f81..243d1e39b 100644 --- a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/HelloWorld.il +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/HelloWorld.il @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17929 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.18020 // Copyright (c) Microsoft Corporation. All rights reserved. @@ -10,7 +10,7 @@ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 4:0:0:0 } -.assembly xxnyzhlv +.assembly k1t5kqf4 { .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 @@ -20,15 +20,15 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.module xxnyzhlv.exe -// MVID: {81192B72-DC9D-4496-83E9-F42A6852B7DB} +.module k1t5kqf4.dll +// MVID: {E5E22476-66BF-4224-B0B7-8B8B07971677} .custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) -.imagebase 0x00400000 +.imagebase 0x10000000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x00BC0000 +// Image base: 0x00B10000 // =============== CLASS MEMBERS DECLARATION =================== @@ -38,7 +38,6 @@ { .method public hidebysig static void Main() cil managed { - .entrypoint // Code size 13 (0xd) .maxstack 8 IL_0000: nop diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/InlineAssignmentTest.cs b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/InlineAssignmentTest.cs index 67a47aa1d..8e5f4488d 100644 --- a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/InlineAssignmentTest.cs +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/InlineAssignmentTest.cs @@ -26,11 +26,6 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty private static InlineAssignmentTest field2; private int[] field3; - public static void Main() - { - - } - public void SimpleInlineWithLocals() { int V_0; diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/InlineAssignmentTest.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/InlineAssignmentTest.il index 003be1a93..b75f536a6 100644 --- a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/InlineAssignmentTest.il +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/InlineAssignmentTest.il @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17929 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.18020 // Copyright (c) Microsoft Corporation. All rights reserved. @@ -10,7 +10,7 @@ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 4:0:0:0 } -.assembly ddqu2emz +.assembly ibag1kve { .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 @@ -20,15 +20,15 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.module ddqu2emz.exe -// MVID: {E3C9CEDE-53B1-4B60-977E-6E7ECB67DB34} +.module ibag1kve.dll +// MVID: {C798271E-70DB-47E6-B4B1-8CCE369C32D9} .custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) -.imagebase 0x00400000 +.imagebase 0x10000000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x03080000 +// Image base: 0x01380000 // =============== CLASS MEMBERS DECLARATION =================== @@ -39,15 +39,6 @@ .field private int32 field1 .field private static class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest field2 .field private int32[] field3 - .method public hidebysig static void Main() cil managed - { - .entrypoint - // Code size 2 (0x2) - .maxstack 8 - IL_0000: nop - IL_0001: ret - } // end of method InlineAssignmentTest::Main - .method public hidebysig instance void SimpleInlineWithLocals() cil managed { diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/InlineAssignmentTest.opt.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/InlineAssignmentTest.opt.il new file mode 100644 index 000000000..ec9c1ff78 --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/InlineAssignmentTest.opt.il @@ -0,0 +1,250 @@ + +// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.18020 +// 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 apcrd50s +{ + .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 apcrd50s.dll +// MVID: {2884A62F-51BC-4EC0-B257-046D0505426A} +.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: 0x02680000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest + extends [mscorlib]System.Object +{ + .field private int32 field1 + .field private static class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest field2 + .field private int32[] field3 + .method public hidebysig instance void + SimpleInlineWithLocals() cil managed + { + // Code size 33 (0x21) + .maxstack 2 + .locals init (int32 V_0, + class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest V_1) + IL_0000: ldc.i4.5 + IL_0001: dup + IL_0002: stloc.0 + IL_0003: call void [mscorlib]System.Console::WriteLine(int32) + IL_0008: ldloc.0 + IL_0009: call void [mscorlib]System.Console::WriteLine(int32) + IL_000e: newobj instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::.ctor() + IL_0013: dup + IL_0014: stloc.1 + IL_0015: call void [mscorlib]System.Console::WriteLine(object) + IL_001a: ldloc.1 + IL_001b: call void [mscorlib]System.Console::WriteLine(object) + IL_0020: ret + } // end of method InlineAssignmentTest::SimpleInlineWithLocals + + .method public hidebysig instance void + SimpleInlineWithFields() cil managed + { + // Code size 32 (0x20) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: ldc.i4.5 + IL_0002: dup + IL_0003: stloc.0 + IL_0004: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::field1 + IL_0009: ldloc.0 + IL_000a: call void [mscorlib]System.Console::WriteLine(int32) + IL_000f: newobj instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::.ctor() + IL_0014: dup + IL_0015: stsfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::field2 + IL_001a: call void [mscorlib]System.Console::WriteLine(object) + IL_001f: ret + } // end of method InlineAssignmentTest::SimpleInlineWithFields + + .method public hidebysig instance void + SimpleInlineWithFields2() cil managed + { + // Code size 53 (0x35) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: ldc.i4.5 + IL_0002: dup + IL_0003: stloc.0 + IL_0004: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::field1 + IL_0009: ldloc.0 + IL_000a: call void [mscorlib]System.Console::WriteLine(int32) + IL_000f: ldarg.0 + IL_0010: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::field1 + IL_0015: call void [mscorlib]System.Console::WriteLine(int32) + IL_001a: newobj instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::.ctor() + IL_001f: dup + IL_0020: stsfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::field2 + IL_0025: call void [mscorlib]System.Console::WriteLine(object) + IL_002a: ldsfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::field2 + IL_002f: call void [mscorlib]System.Console::WriteLine(object) + IL_0034: ret + } // end of method InlineAssignmentTest::SimpleInlineWithFields2 + + .method public hidebysig instance void + AccessArray(int32[] a) cil managed + { + // Code size 23 (0x17) + .maxstack 4 + .locals init (int32 V_0, + int32 V_1) + IL_0000: ldarg.1 + IL_0001: ldc.i4.0 + IL_0002: ldelem.i4 + IL_0003: dup + IL_0004: stloc.0 + IL_0005: call void [mscorlib]System.Console::WriteLine(int32) + IL_000a: ldarg.1 + IL_000b: ldloc.0 + IL_000c: ldloc.0 + IL_000d: dup + IL_000e: stloc.1 + IL_000f: stelem.i4 + IL_0010: ldloc.1 + IL_0011: call void [mscorlib]System.Console::WriteLine(int32) + IL_0016: ret + } // end of method InlineAssignmentTest::AccessArray + + .method public hidebysig instance int32 + Return(int32& a) cil managed + { + // Code size 7 (0x7) + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.1 + IL_0001: ldc.i4.3 + IL_0002: dup + IL_0003: stloc.0 + IL_0004: stind.i4 + IL_0005: ldloc.0 + IL_0006: ret + } // end of method InlineAssignmentTest::Return + + .method public hidebysig instance int32 + Array(int32[] a, + int32 i) cil managed + { + // Code size 8 (0x8) + .maxstack 4 + .locals init (int32 V_0) + IL_0000: ldarg.1 + IL_0001: ldarg.2 + IL_0002: ldarg.2 + IL_0003: dup + IL_0004: stloc.0 + IL_0005: stelem.i4 + IL_0006: ldloc.0 + IL_0007: ret + } // end of method InlineAssignmentTest::Array + + .method public hidebysig instance int32 + Array2(int32 i) cil managed + { + // Code size 13 (0xd) + .maxstack 4 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: ldfld int32[] ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::field3 + IL_0006: ldarg.1 + IL_0007: ldc.i4.1 + IL_0008: dup + IL_0009: stloc.0 + IL_000a: stelem.i4 + IL_000b: ldloc.0 + IL_000c: ret + } // end of method InlineAssignmentTest::Array2 + + .method public hidebysig instance int32 + GetIndex() cil managed + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: newobj instance void [mscorlib]System.Random::.ctor() + IL_0005: ldc.i4.0 + IL_0006: ldc.i4.s 100 + IL_0008: callvirt instance int32 [mscorlib]System.Random::Next(int32, + int32) + IL_000d: ret + } // end of method InlineAssignmentTest::GetIndex + + .method public hidebysig instance int32[] + GetArray() cil managed + { + // Code size 6 (0x6) + .maxstack 8 + IL_0000: newobj instance void [mscorlib]System.NotImplementedException::.ctor() + IL_0005: throw + } // end of method InlineAssignmentTest::GetArray + + .method public hidebysig instance int32 + GetValue(int32 'value') cil managed + { + // Code size 2 (0x2) + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: ret + } // end of method InlineAssignmentTest::GetValue + + .method public hidebysig instance int32 + ArrayUsageWithMethods() cil managed + { + // Code size 29 (0x1d) + .maxstack 4 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: call instance int32[] ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::GetArray() + IL_0006: ldarg.0 + IL_0007: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::GetIndex() + IL_000c: ldarg.0 + IL_000d: ldarg.0 + IL_000e: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::GetIndex() + IL_0013: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest::GetValue(int32) + IL_0018: dup + IL_0019: stloc.0 + IL_001a: stelem.i4 + IL_001b: ldloc.0 + IL_001c: ret + } // end of method InlineAssignmentTest::ArrayUsageWithMethods + + .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 InlineAssignmentTest::.ctor + +} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InlineAssignmentTest + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** +// WARNING: Created Win32 resource file ../../Tests/TestCases/Pretty\InlineAssignmentTest.opt.res diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.il index 46a3e47bd..eefcd9363 100644 --- a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.il +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.il @@ -10,7 +10,7 @@ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 4:0:0:0 } -.assembly '0hc4wf1j' +.assembly '54jn3zeu' { .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 @@ -20,15 +20,15 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.module '0hc4wf1j.dll' -// MVID: {BB9907D8-9A9B-40EA-99C2-170F6DA15820} +.module '54jn3zeu.dll' +// MVID: {95CCC6F2-466F-4752-91AB-4D6F87ADF909} .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: 0x017B0000 +// Image base: 0x017A0000 // =============== CLASS MEMBERS DECLARATION =================== diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.opt.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.opt.il index f76586cdb..b03061652 100644 --- a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.opt.il +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.opt.il @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.18020 // Copyright (c) Microsoft Corporation. All rights reserved. @@ -10,26 +10,25 @@ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 4:0:0:0 } -.assembly ShortCircuit.opt +.assembly bnt5tgxz { .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. - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 ) - + .permissionset reqmin + = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}} .hash algorithm 0x00008004 .ver 0:0:0:0 } -.module ShortCircuit.opt.dll -// MVID: {B2A8B996-539C-419F-B01A-1DC6A75F40BA} +.module bnt5tgxz.dll +// MVID: {B950FA21-9F7A-4262-B8CD-886373656630} +.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: 0x00C70000 +// Image base: 0x01520000 // =============== CLASS MEMBERS DECLARATION =================== @@ -298,3 +297,4 @@ // ============================================================= // *********** DISASSEMBLY COMPLETE *********************** +// WARNING: Created Win32 resource file ../../Tests/TestCases/Pretty\ShortCircuit.opt.res diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.opt.roslyn.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.opt.roslyn.il new file mode 100644 index 000000000..2317d0f36 --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.opt.roslyn.il @@ -0,0 +1,303 @@ + +// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.18020 +// 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 ShortCircuit +{ + .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. + + // --- The following custom attribute is added automatically, do not uncomment ------- + // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 ) + + .permissionset reqmin + = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}} + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.module ShortCircuit.dll +// MVID: {705562DA-2C0F-43A9-B4DA-DA6EF72B9256} +.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: 0x02D40000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public abstract auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit + extends [mscorlib]System.Object +{ + .method public hidebysig newslot abstract virtual + instance void B(bool b) cil managed + { + } // end of method ShortCircuit::B + + .method public hidebysig newslot abstract virtual + instance bool F(int32 i) cil managed + { + } // end of method ShortCircuit::F + + .method public hidebysig newslot abstract virtual + instance void M1() cil managed + { + } // end of method ShortCircuit::M1 + + .method public hidebysig newslot abstract virtual + instance void M2() cil managed + { + } // end of method ShortCircuit::M2 + + .method public hidebysig newslot abstract virtual + instance void E() cil managed + { + } // end of method ShortCircuit::E + + .method public hidebysig instance void + ExprAnd() cil managed + { + // Code size 26 (0x1a) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.0 + IL_0002: ldc.i4.0 + IL_0003: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldc.i4.1 + IL_000c: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0011: br.s IL_0014 + + IL_0013: ldc.i4.0 + IL_0014: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::B(bool) + IL_0019: ret + } // end of method ShortCircuit::ExprAnd + + .method public hidebysig instance void + ExprOr() cil managed + { + // Code size 26 (0x1a) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.0 + IL_0002: ldc.i4.0 + IL_0003: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0008: brtrue.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldc.i4.1 + IL_000c: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0011: br.s IL_0014 + + IL_0013: ldc.i4.1 + IL_0014: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::B(bool) + IL_0019: ret + } // end of method ShortCircuit::ExprOr + + .method public hidebysig instance void + ExprCond() cil managed + { + // Code size 32 (0x20) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.0 + IL_0002: ldc.i4.0 + IL_0003: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0008: brtrue.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldc.i4.2 + IL_000c: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0011: br.s IL_001a + + IL_0013: ldarg.0 + IL_0014: ldc.i4.1 + IL_0015: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_001a: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::B(bool) + IL_001f: ret + } // end of method ShortCircuit::ExprCond + + .method public hidebysig instance void + StmtAnd2() cil managed + { + // Code size 39 (0x27) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldc.i4.0 + IL_0002: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0007: brfalse.s IL_001a + + IL_0009: ldarg.0 + IL_000a: ldc.i4.1 + IL_000b: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0010: brfalse.s IL_001a + + IL_0012: ldarg.0 + IL_0013: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M1() + IL_0018: br.s IL_0020 + + IL_001a: ldarg.0 + IL_001b: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M2() + IL_0020: ldarg.0 + IL_0021: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::E() + IL_0026: ret + } // end of method ShortCircuit::StmtAnd2 + + .method public hidebysig instance void + StmtOr2() cil managed + { + // Code size 39 (0x27) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldc.i4.0 + IL_0002: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0007: brtrue.s IL_0012 + + IL_0009: ldarg.0 + IL_000a: ldc.i4.1 + IL_000b: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0010: brfalse.s IL_001a + + IL_0012: ldarg.0 + IL_0013: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M1() + IL_0018: br.s IL_0020 + + IL_001a: ldarg.0 + IL_001b: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M2() + IL_0020: ldarg.0 + IL_0021: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::E() + IL_0026: ret + } // end of method ShortCircuit::StmtOr2 + + .method public hidebysig instance void + StmtAnd3() cil managed + { + // Code size 48 (0x30) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldc.i4.0 + IL_0002: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0007: brfalse.s IL_0023 + + IL_0009: ldarg.0 + IL_000a: ldc.i4.1 + IL_000b: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0010: brfalse.s IL_0023 + + IL_0012: ldarg.0 + IL_0013: ldc.i4.2 + IL_0014: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0019: brfalse.s IL_0023 + + IL_001b: ldarg.0 + IL_001c: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M1() + IL_0021: br.s IL_0029 + + IL_0023: ldarg.0 + IL_0024: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M2() + IL_0029: ldarg.0 + IL_002a: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::E() + IL_002f: ret + } // end of method ShortCircuit::StmtAnd3 + + .method public hidebysig instance void + StmtOr3() cil managed + { + // Code size 48 (0x30) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldc.i4.0 + IL_0002: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0007: brtrue.s IL_001b + + IL_0009: ldarg.0 + IL_000a: ldc.i4.1 + IL_000b: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0010: brtrue.s IL_001b + + IL_0012: ldarg.0 + IL_0013: ldc.i4.3 + IL_0014: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0019: brfalse.s IL_0023 + + IL_001b: ldarg.0 + IL_001c: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M1() + IL_0021: br.s IL_0029 + + IL_0023: ldarg.0 + IL_0024: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M2() + IL_0029: ldarg.0 + IL_002a: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::E() + IL_002f: ret + } // end of method ShortCircuit::StmtOr3 + + .method public hidebysig instance void + StmtComplex() cil managed + { + // Code size 66 (0x42) + .maxstack 2 + IL_0000: ldarg.0 + IL_0001: ldc.i4.0 + IL_0002: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0007: brfalse.s IL_0035 + + IL_0009: ldarg.0 + IL_000a: ldc.i4.1 + IL_000b: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0010: brfalse.s IL_0035 + + IL_0012: ldarg.0 + IL_0013: ldc.i4.2 + IL_0014: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0019: brtrue.s IL_0035 + + IL_001b: ldarg.0 + IL_001c: ldc.i4.3 + IL_001d: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0022: brtrue.s IL_002d + + IL_0024: ldarg.0 + IL_0025: ldc.i4.4 + IL_0026: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_002b: brfalse.s IL_0035 + + IL_002d: ldarg.0 + IL_002e: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M1() + IL_0033: br.s IL_003b + + IL_0035: ldarg.0 + IL_0036: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M2() + IL_003b: ldarg.0 + IL_003c: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::E() + IL_0041: ret + } // end of method ShortCircuit::StmtComplex + + .method family 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 ShortCircuit::.ctor + +} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.roslyn.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.roslyn.il new file mode 100644 index 000000000..bc36f4c72 --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/ShortCircuit.roslyn.il @@ -0,0 +1,383 @@ + +// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.18020 +// 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 ShortCircuit +{ + .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. + + // --- The following custom attribute is added automatically, do not uncomment ------- + // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 07 01 00 00 00 00 ) + + .permissionset reqmin + = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}} + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.module ShortCircuit.dll +// MVID: {B3B8C47D-78FB-4162-BB12-12183DDBD57B} +.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: 0x02FC0000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public abstract auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit + extends [mscorlib]System.Object +{ + .method public hidebysig newslot abstract virtual + instance void B(bool b) cil managed + { + } // end of method ShortCircuit::B + + .method public hidebysig newslot abstract virtual + instance bool F(int32 i) cil managed + { + } // end of method ShortCircuit::F + + .method public hidebysig newslot abstract virtual + instance void M1() cil managed + { + } // end of method ShortCircuit::M1 + + .method public hidebysig newslot abstract virtual + instance void M2() cil managed + { + } // end of method ShortCircuit::M2 + + .method public hidebysig newslot abstract virtual + instance void E() cil managed + { + } // end of method ShortCircuit::E + + .method public hidebysig instance void + ExprAnd() cil managed + { + // Code size 28 (0x1c) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldarg.0 + IL_0003: ldc.i4.0 + IL_0004: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0009: brfalse.s IL_0014 + + IL_000b: ldarg.0 + IL_000c: ldc.i4.1 + IL_000d: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0012: br.s IL_0015 + + IL_0014: ldc.i4.0 + IL_0015: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::B(bool) + IL_001a: nop + IL_001b: ret + } // end of method ShortCircuit::ExprAnd + + .method public hidebysig instance void + ExprOr() cil managed + { + // Code size 28 (0x1c) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldarg.0 + IL_0003: ldc.i4.0 + IL_0004: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0009: brtrue.s IL_0014 + + IL_000b: ldarg.0 + IL_000c: ldc.i4.1 + IL_000d: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0012: br.s IL_0015 + + IL_0014: ldc.i4.1 + IL_0015: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::B(bool) + IL_001a: nop + IL_001b: ret + } // end of method ShortCircuit::ExprOr + + .method public hidebysig instance void + ExprCond() cil managed + { + // Code size 34 (0x22) + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldarg.0 + IL_0003: ldc.i4.0 + IL_0004: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0009: brtrue.s IL_0014 + + IL_000b: ldarg.0 + IL_000c: ldc.i4.2 + IL_000d: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0012: br.s IL_001b + + IL_0014: ldarg.0 + IL_0015: ldc.i4.1 + IL_0016: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_001b: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::B(bool) + IL_0020: nop + IL_0021: ret + } // end of method ShortCircuit::ExprCond + + .method public hidebysig instance void + StmtAnd2() cil managed + { + // Code size 52 (0x34) + .maxstack 2 + .locals init (bool V_0) + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldc.i4.0 + IL_0003: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldc.i4.1 + IL_000c: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0011: br.s IL_0014 + + IL_0013: ldc.i4.0 + IL_0014: stloc.0 + IL_0015: ldloc.0 + IL_0016: brfalse.s IL_0023 + + IL_0018: nop + IL_0019: ldarg.0 + IL_001a: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M1() + IL_001f: nop + IL_0020: nop + IL_0021: br.s IL_002c + + IL_0023: nop + IL_0024: ldarg.0 + IL_0025: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M2() + IL_002a: nop + IL_002b: nop + IL_002c: ldarg.0 + IL_002d: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::E() + IL_0032: nop + IL_0033: ret + } // end of method ShortCircuit::StmtAnd2 + + .method public hidebysig instance void + StmtOr2() cil managed + { + // Code size 52 (0x34) + .maxstack 2 + .locals init (bool V_0) + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldc.i4.0 + IL_0003: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0008: brtrue.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldc.i4.1 + IL_000c: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0011: br.s IL_0014 + + IL_0013: ldc.i4.1 + IL_0014: stloc.0 + IL_0015: ldloc.0 + IL_0016: brfalse.s IL_0023 + + IL_0018: nop + IL_0019: ldarg.0 + IL_001a: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M1() + IL_001f: nop + IL_0020: nop + IL_0021: br.s IL_002c + + IL_0023: nop + IL_0024: ldarg.0 + IL_0025: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M2() + IL_002a: nop + IL_002b: nop + IL_002c: ldarg.0 + IL_002d: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::E() + IL_0032: nop + IL_0033: ret + } // end of method ShortCircuit::StmtOr2 + + .method public hidebysig instance void + StmtAnd3() cil managed + { + // Code size 61 (0x3d) + .maxstack 2 + .locals init (bool V_0) + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldc.i4.0 + IL_0003: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0008: brfalse.s IL_001c + + IL_000a: ldarg.0 + IL_000b: ldc.i4.1 + IL_000c: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0011: brfalse.s IL_001c + + IL_0013: ldarg.0 + IL_0014: ldc.i4.2 + IL_0015: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_001a: br.s IL_001d + + IL_001c: ldc.i4.0 + IL_001d: stloc.0 + IL_001e: ldloc.0 + IL_001f: brfalse.s IL_002c + + IL_0021: nop + IL_0022: ldarg.0 + IL_0023: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M1() + IL_0028: nop + IL_0029: nop + IL_002a: br.s IL_0035 + + IL_002c: nop + IL_002d: ldarg.0 + IL_002e: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M2() + IL_0033: nop + IL_0034: nop + IL_0035: ldarg.0 + IL_0036: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::E() + IL_003b: nop + IL_003c: ret + } // end of method ShortCircuit::StmtAnd3 + + .method public hidebysig instance void + StmtOr3() cil managed + { + // Code size 61 (0x3d) + .maxstack 2 + .locals init (bool V_0) + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldc.i4.0 + IL_0003: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0008: brtrue.s IL_001c + + IL_000a: ldarg.0 + IL_000b: ldc.i4.1 + IL_000c: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0011: brtrue.s IL_001c + + IL_0013: ldarg.0 + IL_0014: ldc.i4.3 + IL_0015: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_001a: br.s IL_001d + + IL_001c: ldc.i4.1 + IL_001d: stloc.0 + IL_001e: ldloc.0 + IL_001f: brfalse.s IL_002c + + IL_0021: nop + IL_0022: ldarg.0 + IL_0023: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M1() + IL_0028: nop + IL_0029: nop + IL_002a: br.s IL_0035 + + IL_002c: nop + IL_002d: ldarg.0 + IL_002e: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M2() + IL_0033: nop + IL_0034: nop + IL_0035: ldarg.0 + IL_0036: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::E() + IL_003b: nop + IL_003c: ret + } // end of method ShortCircuit::StmtOr3 + + .method public hidebysig instance void + StmtComplex() cil managed + { + // Code size 82 (0x52) + .maxstack 2 + .locals init (bool V_0) + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldc.i4.0 + IL_0003: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0008: brfalse.s IL_0031 + + IL_000a: ldarg.0 + IL_000b: ldc.i4.1 + IL_000c: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0011: brfalse.s IL_0031 + + IL_0013: ldarg.0 + IL_0014: ldc.i4.2 + IL_0015: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_001a: brtrue.s IL_0031 + + IL_001c: ldarg.0 + IL_001d: ldc.i4.3 + IL_001e: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_0023: brtrue.s IL_002e + + IL_0025: ldarg.0 + IL_0026: ldc.i4.4 + IL_0027: callvirt instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::F(int32) + IL_002c: br.s IL_002f + + IL_002e: ldc.i4.1 + IL_002f: br.s IL_0032 + + IL_0031: ldc.i4.0 + IL_0032: stloc.0 + IL_0033: ldloc.0 + IL_0034: brfalse.s IL_0041 + + IL_0036: nop + IL_0037: ldarg.0 + IL_0038: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M1() + IL_003d: nop + IL_003e: nop + IL_003f: br.s IL_004a + + IL_0041: nop + IL_0042: ldarg.0 + IL_0043: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::M2() + IL_0048: nop + IL_0049: nop + IL_004a: ldarg.0 + IL_004b: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit::E() + IL_0050: nop + IL_0051: ret + } // end of method ShortCircuit::StmtComplex + + .method family hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 8 (0x8) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: nop + IL_0007: ret + } // end of method ShortCircuit::.ctor + +} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.ShortCircuit + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** diff --git a/ICSharpCode.Decompiler/Tests/app.config b/ICSharpCode.Decompiler/Tests/app.config new file mode 100644 index 000000000..95419741b --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/ICSharpCode.Decompiler/Tests/packages.config b/ICSharpCode.Decompiler/Tests/packages.config index 5b3d94163..d7dfdd7e6 100644 --- a/ICSharpCode.Decompiler/Tests/packages.config +++ b/ICSharpCode.Decompiler/Tests/packages.config @@ -1,7 +1,11 @@  + + + - + + \ No newline at end of file diff --git a/ICSharpCode.Decompiler/packages.config b/ICSharpCode.Decompiler/packages.config index 412c0517d..718fb8877 100644 --- a/ICSharpCode.Decompiler/packages.config +++ b/ICSharpCode.Decompiler/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/ILSpy.BamlDecompiler/Tests/ILSpy.BamlDecompiler.Tests.csproj b/ILSpy.BamlDecompiler/Tests/ILSpy.BamlDecompiler.Tests.csproj index 13b4446cb..e917fc832 100644 --- a/ILSpy.BamlDecompiler/Tests/ILSpy.BamlDecompiler.Tests.csproj +++ b/ILSpy.BamlDecompiler/Tests/ILSpy.BamlDecompiler.Tests.csproj @@ -143,6 +143,7 @@ + diff --git a/ILSpy.BamlDecompiler/Tests/app.config b/ILSpy.BamlDecompiler/Tests/app.config new file mode 100644 index 000000000..95419741b --- /dev/null +++ b/ILSpy.BamlDecompiler/Tests/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/ILSpy/ILSpy.csproj b/ILSpy/ILSpy.csproj index 226efcd1d..9d5339004 100644 --- a/ILSpy/ILSpy.csproj +++ b/ILSpy/ILSpy.csproj @@ -80,8 +80,8 @@ 3.0 - - ..\packages\System.Collections.Immutable.1.2.0-rc2-24027\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll + + ..\packages\System.Collections.Immutable.1.3.0\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll True diff --git a/ILSpy/packages.config b/ILSpy/packages.config index ef7dda2d8..e000fbb81 100644 --- a/ILSpy/packages.config +++ b/ILSpy/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/Rebracer.xml b/Rebracer.xml index f0cfda200..aa46206a0 100644 --- a/Rebracer.xml +++ b/Rebracer.xml @@ -22,9 +22,13 @@ + 0 + 0 1 + 1 1 - 1 + -1 + -1 1 2 80 @@ -96,7 +100,7 @@ 1 0 1 - 1 + 0 1 0 0