From bd15d69adaf54bad87bbc97f064949694885ffc6 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Thu, 17 May 2018 20:00:55 +0200 Subject: [PATCH] Add test cases for #1138 --- .../TestCases/Pretty/InitializerTests.cs | 21 +++++ .../TestCases/Pretty/InitializerTests.il | 68 ++++++++++++++ .../TestCases/Pretty/InitializerTests.opt.il | 62 +++++++++++++ .../Pretty/InitializerTests.opt.roslyn.il | 86 ++++++++++++++--- .../Pretty/InitializerTests.roslyn.il | 92 ++++++++++++++++--- .../Transforms/TransformArrayInitializers.cs | 2 +- 6 files changed, 306 insertions(+), 25 deletions(-) diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.cs index 87cd568f8..2179a6a82 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.cs +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.cs @@ -197,6 +197,27 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty return c; } + public static void InvalidIndices(int a) + { + int[] array = new int[1]; + array[1] = a; + X(Y(), array); + } + + public static void InvalidIndices2(int a) + { + int[] array = new int[1]; + array[-1] = a; + X(Y(), array); + } + + public static void IndicesInWrongOrder(int a, int b) + { + int[] array = new int[5]; + array[2] = b; + array[1] = a; + X(Y(), array); + } public static void CollectionInitializerList() { diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.il b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.il index 7bff37757..f6cc954c2 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.il +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.il @@ -771,6 +771,74 @@ IL_002b: ret } // end of method InitializerTests::Test4 + .method public hidebysig static void InvalidIndices(int32 a) cil managed + { + // Code size 25 (0x19) + .maxstack 3 + .locals init (int32[] V_0) + IL_0000: nop + IL_0001: ldc.i4.1 + IL_0002: newarr [mscorlib]System.Int32 + IL_0007: stloc.0 + IL_0008: ldloc.0 + IL_0009: ldc.i4.1 + IL_000a: ldarg.0 + IL_000b: stelem.i4 + IL_000c: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() + IL_0011: ldloc.0 + IL_0012: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::X(object, + object) + IL_0017: nop + IL_0018: ret + } // end of method InitializerTests::InvalidIndices + + .method public hidebysig static void InvalidIndices2(int32 a) cil managed + { + // Code size 25 (0x19) + .maxstack 3 + .locals init (int32[] V_0) + IL_0000: nop + IL_0001: ldc.i4.1 + IL_0002: newarr [mscorlib]System.Int32 + IL_0007: stloc.0 + IL_0008: ldloc.0 + IL_0009: ldc.i4.m1 + IL_000a: ldarg.0 + IL_000b: stelem.i4 + IL_000c: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() + IL_0011: ldloc.0 + IL_0012: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::X(object, + object) + IL_0017: nop + IL_0018: ret + } // end of method InitializerTests::InvalidIndices2 + + .method public hidebysig static void IndicesInWrongOrder(int32 a, + int32 b) cil managed + { + // Code size 29 (0x1d) + .maxstack 3 + .locals init (int32[] V_0) + IL_0000: nop + IL_0001: ldc.i4.5 + IL_0002: newarr [mscorlib]System.Int32 + IL_0007: stloc.0 + IL_0008: ldloc.0 + IL_0009: ldc.i4.2 + IL_000a: ldarg.1 + IL_000b: stelem.i4 + IL_000c: ldloc.0 + IL_000d: ldc.i4.1 + IL_000e: ldarg.0 + IL_000f: stelem.i4 + IL_0010: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() + IL_0015: ldloc.0 + IL_0016: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::X(object, + object) + IL_001b: nop + IL_001c: ret + } // end of method InitializerTests::IndicesInWrongOrder + .method public hidebysig static void CollectionInitializerList() cil managed { // Code size 44 (0x2c) diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.opt.il b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.opt.il index 54019d111..2afbef293 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.opt.il +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.opt.il @@ -654,6 +654,68 @@ IL_0026: ret } // end of method InitializerTests::Test4 + .method public hidebysig static void InvalidIndices(int32 a) cil managed + { + // Code size 23 (0x17) + .maxstack 3 + .locals init (int32[] V_0) + IL_0000: ldc.i4.1 + IL_0001: newarr [mscorlib]System.Int32 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: ldc.i4.1 + IL_0009: ldarg.0 + IL_000a: stelem.i4 + IL_000b: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() + IL_0010: ldloc.0 + IL_0011: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::X(object, + object) + IL_0016: ret + } // end of method InitializerTests::InvalidIndices + + .method public hidebysig static void InvalidIndices2(int32 a) cil managed + { + // Code size 23 (0x17) + .maxstack 3 + .locals init (int32[] V_0) + IL_0000: ldc.i4.1 + IL_0001: newarr [mscorlib]System.Int32 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: ldc.i4.m1 + IL_0009: ldarg.0 + IL_000a: stelem.i4 + IL_000b: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() + IL_0010: ldloc.0 + IL_0011: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::X(object, + object) + IL_0016: ret + } // end of method InitializerTests::InvalidIndices2 + + .method public hidebysig static void IndicesInWrongOrder(int32 a, + int32 b) cil managed + { + // Code size 27 (0x1b) + .maxstack 3 + .locals init (int32[] V_0) + IL_0000: ldc.i4.5 + IL_0001: newarr [mscorlib]System.Int32 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: ldc.i4.2 + IL_0009: ldarg.1 + IL_000a: stelem.i4 + IL_000b: ldloc.0 + IL_000c: ldc.i4.1 + IL_000d: ldarg.0 + IL_000e: stelem.i4 + IL_000f: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() + IL_0014: ldloc.0 + IL_0015: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::X(object, + object) + IL_001a: ret + } // end of method InitializerTests::IndicesInWrongOrder + .method public hidebysig static void CollectionInitializerList() cil managed { // Code size 39 (0x27) diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.opt.roslyn.il b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.opt.roslyn.il index a4e50211e..6cde62c4a 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.opt.roslyn.il +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.opt.roslyn.il @@ -499,8 +499,8 @@ { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .field public static initonly class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c' '<>9' - .field public static class [mscorlib]System.EventHandler '<>9__23_0' - .field public static class [mscorlib]System.Func`2 '<>9__43_0' + .field public static class [mscorlib]System.EventHandler '<>9__26_0' + .field public static class [mscorlib]System.Func`2 '<>9__46_0' .method private hidebysig specialname rtspecialname static void .cctor() cil managed { @@ -522,17 +522,17 @@ } // end of method '<>c'::.ctor .method assembly hidebysig instance void - 'b__23_0'(object '', + 'b__26_0'(object '', class [mscorlib]System.EventArgs '') cil managed { // Code size 6 (0x6) .maxstack 8 IL_0000: call void [mscorlib]System.Console::WriteLine() IL_0005: ret - } // end of method '<>c'::'b__23_0' + } // end of method '<>c'::'b__26_0' .method assembly hidebysig instance bool - 'b__43_0'(class [mscorlib]System.Globalization.NumberFormatInfo format) cil managed + 'b__46_0'(class [mscorlib]System.Globalization.NumberFormatInfo format) cil managed { // Code size 17 (0x11) .maxstack 8 @@ -542,7 +542,7 @@ IL_000b: call bool [mscorlib]System.String::op_Equality(string, string) IL_0010: ret - } // end of method '<>c'::'b__43_0' + } // end of method '<>c'::'b__46_0' } // end of class '<>c' @@ -688,6 +688,68 @@ IL_0024: ret } // end of method InitializerTests::Test4 + .method public hidebysig static void InvalidIndices(int32 a) cil managed + { + // Code size 23 (0x17) + .maxstack 3 + .locals init (int32[] V_0) + IL_0000: ldc.i4.1 + IL_0001: newarr [mscorlib]System.Int32 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: ldc.i4.1 + IL_0009: ldarg.0 + IL_000a: stelem.i4 + IL_000b: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() + IL_0010: ldloc.0 + IL_0011: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::X(object, + object) + IL_0016: ret + } // end of method InitializerTests::InvalidIndices + + .method public hidebysig static void InvalidIndices2(int32 a) cil managed + { + // Code size 23 (0x17) + .maxstack 3 + .locals init (int32[] V_0) + IL_0000: ldc.i4.1 + IL_0001: newarr [mscorlib]System.Int32 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: ldc.i4.m1 + IL_0009: ldarg.0 + IL_000a: stelem.i4 + IL_000b: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() + IL_0010: ldloc.0 + IL_0011: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::X(object, + object) + IL_0016: ret + } // end of method InitializerTests::InvalidIndices2 + + .method public hidebysig static void IndicesInWrongOrder(int32 a, + int32 b) cil managed + { + // Code size 27 (0x1b) + .maxstack 3 + .locals init (int32[] V_0) + IL_0000: ldc.i4.5 + IL_0001: newarr [mscorlib]System.Int32 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: ldc.i4.2 + IL_0009: ldarg.1 + IL_000a: stelem.i4 + IL_000b: ldloc.0 + IL_000c: ldc.i4.1 + IL_000d: ldarg.0 + IL_000e: stelem.i4 + IL_000f: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() + IL_0014: ldloc.0 + IL_0015: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::X(object, + object) + IL_001a: ret + } // end of method InitializerTests::IndicesInWrongOrder + .method public hidebysig static void CollectionInitializerList() cil managed { // Code size 37 (0x25) @@ -829,18 +891,18 @@ IL_0000: newobj instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/Data::.ctor() IL_0005: stloc.0 IL_0006: ldloc.0 - IL_0007: ldsfld class [mscorlib]System.EventHandler ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__23_0' + IL_0007: ldsfld class [mscorlib]System.EventHandler ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__26_0' IL_000c: dup IL_000d: brtrue.s IL_0026 IL_000f: pop IL_0010: ldsfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c' ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9' - IL_0015: ldftn instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'b__23_0'(object, + IL_0015: ldftn instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'b__26_0'(object, class [mscorlib]System.EventArgs) IL_001b: newobj instance void [mscorlib]System.EventHandler::.ctor(object, native int) IL_0020: dup - IL_0021: stsfld class [mscorlib]System.EventHandler ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__23_0' + IL_0021: stsfld class [mscorlib]System.EventHandler ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__26_0' IL_0026: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/Data::add_TestEvent(class [mscorlib]System.EventHandler) IL_002b: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() IL_0030: ldloc.0 @@ -1303,17 +1365,17 @@ IL_0033: callvirt instance void [mscorlib]System.Globalization.CultureInfo::set_DateTimeFormat(class [mscorlib]System.Globalization.DateTimeFormatInfo) IL_0038: dup IL_0039: ldloc.0 - IL_003a: ldsfld class [mscorlib]System.Func`2 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__43_0' + IL_003a: ldsfld class [mscorlib]System.Func`2 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__46_0' IL_003f: dup IL_0040: brtrue.s IL_0059 IL_0042: pop IL_0043: ldsfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c' ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9' - IL_0048: ldftn instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'b__43_0'(class [mscorlib]System.Globalization.NumberFormatInfo) + IL_0048: ldftn instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'b__46_0'(class [mscorlib]System.Globalization.NumberFormatInfo) IL_004e: newobj instance void class [mscorlib]System.Func`2::.ctor(object, native int) IL_0053: dup - IL_0054: stsfld class [mscorlib]System.Func`2 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__43_0' + IL_0054: stsfld class [mscorlib]System.Func`2 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__46_0' IL_0059: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [System.Core]System.Linq.Enumerable::Where(class [mscorlib]System.Collections.Generic.IEnumerable`1, class [mscorlib]System.Func`2) IL_005e: call !!0 [System.Core]System.Linq.Enumerable::First(class [mscorlib]System.Collections.Generic.IEnumerable`1) diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.roslyn.il b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.roslyn.il index 63b2de34e..959e70c3a 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.roslyn.il +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.roslyn.il @@ -526,8 +526,8 @@ { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .field public static initonly class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c' '<>9' - .field public static class [mscorlib]System.EventHandler '<>9__23_0' - .field public static class [mscorlib]System.Func`2 '<>9__43_0' + .field public static class [mscorlib]System.EventHandler '<>9__26_0' + .field public static class [mscorlib]System.Func`2 '<>9__46_0' .method private hidebysig specialname rtspecialname static void .cctor() cil managed { @@ -550,7 +550,7 @@ } // end of method '<>c'::.ctor .method assembly hidebysig instance void - 'b__23_0'(object '', + 'b__26_0'(object '', class [mscorlib]System.EventArgs '') cil managed { // Code size 8 (0x8) @@ -559,10 +559,10 @@ IL_0001: call void [mscorlib]System.Console::WriteLine() IL_0006: nop IL_0007: ret - } // end of method '<>c'::'b__23_0' + } // end of method '<>c'::'b__26_0' .method assembly hidebysig instance bool - 'b__43_0'(class [mscorlib]System.Globalization.NumberFormatInfo format) cil managed + 'b__46_0'(class [mscorlib]System.Globalization.NumberFormatInfo format) cil managed { // Code size 17 (0x11) .maxstack 8 @@ -572,7 +572,7 @@ IL_000b: call bool [mscorlib]System.String::op_Equality(string, string) IL_0010: ret - } // end of method '<>c'::'b__43_0' + } // end of method '<>c'::'b__46_0' } // end of class '<>c' @@ -782,6 +782,74 @@ IL_002b: ret } // end of method InitializerTests::Test4 + .method public hidebysig static void InvalidIndices(int32 a) cil managed + { + // Code size 25 (0x19) + .maxstack 3 + .locals init (int32[] V_0) + IL_0000: nop + IL_0001: ldc.i4.1 + IL_0002: newarr [mscorlib]System.Int32 + IL_0007: stloc.0 + IL_0008: ldloc.0 + IL_0009: ldc.i4.1 + IL_000a: ldarg.0 + IL_000b: stelem.i4 + IL_000c: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() + IL_0011: ldloc.0 + IL_0012: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::X(object, + object) + IL_0017: nop + IL_0018: ret + } // end of method InitializerTests::InvalidIndices + + .method public hidebysig static void InvalidIndices2(int32 a) cil managed + { + // Code size 25 (0x19) + .maxstack 3 + .locals init (int32[] V_0) + IL_0000: nop + IL_0001: ldc.i4.1 + IL_0002: newarr [mscorlib]System.Int32 + IL_0007: stloc.0 + IL_0008: ldloc.0 + IL_0009: ldc.i4.m1 + IL_000a: ldarg.0 + IL_000b: stelem.i4 + IL_000c: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() + IL_0011: ldloc.0 + IL_0012: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::X(object, + object) + IL_0017: nop + IL_0018: ret + } // end of method InitializerTests::InvalidIndices2 + + .method public hidebysig static void IndicesInWrongOrder(int32 a, + int32 b) cil managed + { + // Code size 29 (0x1d) + .maxstack 3 + .locals init (int32[] V_0) + IL_0000: nop + IL_0001: ldc.i4.5 + IL_0002: newarr [mscorlib]System.Int32 + IL_0007: stloc.0 + IL_0008: ldloc.0 + IL_0009: ldc.i4.2 + IL_000a: ldarg.1 + IL_000b: stelem.i4 + IL_000c: ldloc.0 + IL_000d: ldc.i4.1 + IL_000e: ldarg.0 + IL_000f: stelem.i4 + IL_0010: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() + IL_0015: ldloc.0 + IL_0016: call void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::X(object, + object) + IL_001b: nop + IL_001c: ret + } // end of method InitializerTests::IndicesInWrongOrder + .method public hidebysig static void CollectionInitializerList() cil managed { // Code size 42 (0x2a) @@ -959,18 +1027,18 @@ IL_0001: newobj instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/Data::.ctor() IL_0006: stloc.0 IL_0007: ldloc.0 - IL_0008: ldsfld class [mscorlib]System.EventHandler ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__23_0' + IL_0008: ldsfld class [mscorlib]System.EventHandler ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__26_0' IL_000d: dup IL_000e: brtrue.s IL_0027 IL_0010: pop IL_0011: ldsfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c' ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9' - IL_0016: ldftn instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'b__23_0'(object, + IL_0016: ldftn instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'b__26_0'(object, class [mscorlib]System.EventArgs) IL_001c: newobj instance void [mscorlib]System.EventHandler::.ctor(object, native int) IL_0021: dup - IL_0022: stsfld class [mscorlib]System.EventHandler ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__23_0' + IL_0022: stsfld class [mscorlib]System.EventHandler ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__26_0' IL_0027: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/Data::add_TestEvent(class [mscorlib]System.EventHandler) IL_002c: nop IL_002d: call object ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests::Y() @@ -1525,17 +1593,17 @@ IL_003b: nop IL_003c: dup IL_003d: ldloc.0 - IL_003e: ldsfld class [mscorlib]System.Func`2 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__43_0' + IL_003e: ldsfld class [mscorlib]System.Func`2 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__46_0' IL_0043: dup IL_0044: brtrue.s IL_005d IL_0046: pop IL_0047: ldsfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c' ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9' - IL_004c: ldftn instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'b__43_0'(class [mscorlib]System.Globalization.NumberFormatInfo) + IL_004c: ldftn instance bool ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'b__46_0'(class [mscorlib]System.Globalization.NumberFormatInfo) IL_0052: newobj instance void class [mscorlib]System.Func`2::.ctor(object, native int) IL_0057: dup - IL_0058: stsfld class [mscorlib]System.Func`2 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__43_0' + IL_0058: stsfld class [mscorlib]System.Func`2 ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests/'<>c'::'<>9__46_0' IL_005d: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [System.Core]System.Linq.Enumerable::Where(class [mscorlib]System.Collections.Generic.IEnumerable`1, class [mscorlib]System.Func`2) IL_0062: call !!0 [System.Core]System.Linq.Enumerable::First(class [mscorlib]System.Collections.Generic.IEnumerable`1) diff --git a/ICSharpCode.Decompiler/IL/Transforms/TransformArrayInitializers.cs b/ICSharpCode.Decompiler/IL/Transforms/TransformArrayInitializers.cs index aae74209d..880749035 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/TransformArrayInitializers.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/TransformArrayInitializers.cs @@ -185,7 +185,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms // However, leaving array slots empty is allowed, as those are filled with default values when the // initializer block is generated. if (index < 0 || index >= length || index < nextMinimumIndex) - break; + return false; nextMinimumIndex = index; values[nextMinimumIndex] = value; nextMinimumIndex++;