diff --git a/ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj b/ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj index 4fa6cd40c..20b231da5 100644 --- a/ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj +++ b/ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj @@ -62,6 +62,7 @@ + diff --git a/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs b/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs index 30d62d94d..b65316d85 100644 --- a/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs +++ b/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs @@ -224,6 +224,12 @@ namespace ICSharpCode.Decompiler.Tests Run(cscOptions: cscOptions, decompilerSettings: new DecompilerSettings { UseDebugSymbols = false }); } + [Test] + public void CS6_StringInterpolation([ValueSource("roslynOnlyOptions")] CompilerOptions cscOptions) + { + Run(cscOptions: cscOptions); + } + void Run([CallerMemberName] string testName = null, AssemblerOptions asmOptions = AssemblerOptions.None, CompilerOptions cscOptions = CompilerOptions.None, DecompilerSettings decompilerSettings = null) { var ilFile = Path.Combine(TestCasePath, testName) + Tester.GetSuffix(cscOptions) + ".il"; diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CS6_StringInterpolation.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CS6_StringInterpolation.cs new file mode 100644 index 000000000..ed4146640 --- /dev/null +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CS6_StringInterpolation.cs @@ -0,0 +1,43 @@ +using System; + +namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty +{ + internal class CS6_StringInterpolation + { + public static void General(string[] args) + { + Console.WriteLine($"{args.Length}"); + Console.WriteLine($"a{{0{args.Length}"); + Console.WriteLine($"{args.Length:x}"); + Console.WriteLine($"\ta{args.Length}b"); + Console.WriteLine($"\ta{args.Length}ba{args[0]}a{args[args.Length]}a{args.Length}"); + } + + public static void Invalid(string[] args) + { + Console.WriteLine(string.Format("", args.Length)); + Console.WriteLine(string.Format("a", args.Length)); + Console.WriteLine(string.Format("}", args.Length)); + Console.WriteLine(string.Format("{", args.Length)); + Console.WriteLine(string.Format(":", args.Length)); + Console.WriteLine(string.Format("\t", args.Length)); + Console.WriteLine(string.Format("\\", args.Length)); + Console.WriteLine(string.Format("\"", args.Length)); + Console.WriteLine(string.Format("aa", args.Length)); + Console.WriteLine(string.Format("a}", args.Length)); + Console.WriteLine(string.Format("a{", args.Length)); + Console.WriteLine(string.Format("a:", args.Length)); + Console.WriteLine(string.Format("a\t", args.Length)); + Console.WriteLine(string.Format("a\\", args.Length)); + Console.WriteLine(string.Format("a\"", args.Length)); + Console.WriteLine(string.Format("a{:", args.Length)); + Console.WriteLine(string.Format("a{0", args.Length)); + Console.WriteLine(string.Format("a{{0", args.Length)); + Console.WriteLine(string.Format("}a{{0", args.Length)); + Console.WriteLine(string.Format("}{", args.Length)); + Console.WriteLine(string.Format("{}", args.Length)); + Console.WriteLine(string.Format("{0:}", args.Length)); + Console.WriteLine(string.Format("{0{a}0}", args.Length)); + } + } +} diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CS6_StringInterpolation.opt.roslyn.il b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CS6_StringInterpolation.opt.roslyn.il new file mode 100644 index 000000000..9f6074b2e --- /dev/null +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CS6_StringInterpolation.opt.roslyn.il @@ -0,0 +1,322 @@ + +// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 +// 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 CS6_StringInterpolation +{ + .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 CS6_StringInterpolation.dll +// MVID: {12BAF781-868E-4161-A197-F81DC457D96B} +.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: 0x03620000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class private auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.CS6_StringInterpolation + extends [mscorlib]System.Object +{ + .method public hidebysig static void General(string[] args) cil managed + { + // Code size 150 (0x96) + .maxstack 6 + IL_0000: ldstr "{0}" + IL_0005: ldarg.0 + IL_0006: ldlen + IL_0007: conv.i4 + IL_0008: box [mscorlib]System.Int32 + IL_000d: call string [mscorlib]System.String::Format(string, + object) + IL_0012: call void [mscorlib]System.Console::WriteLine(string) + IL_0017: ldstr "a{{0{0}" + IL_001c: ldarg.0 + IL_001d: ldlen + IL_001e: conv.i4 + IL_001f: box [mscorlib]System.Int32 + IL_0024: call string [mscorlib]System.String::Format(string, + object) + IL_0029: call void [mscorlib]System.Console::WriteLine(string) + IL_002e: ldstr "{0:x}" + IL_0033: ldarg.0 + IL_0034: ldlen + IL_0035: conv.i4 + IL_0036: box [mscorlib]System.Int32 + IL_003b: call string [mscorlib]System.String::Format(string, + object) + IL_0040: call void [mscorlib]System.Console::WriteLine(string) + IL_0045: ldstr "\ta{0}b" + IL_004a: ldarg.0 + IL_004b: ldlen + IL_004c: conv.i4 + IL_004d: box [mscorlib]System.Int32 + IL_0052: call string [mscorlib]System.String::Format(string, + object) + IL_0057: call void [mscorlib]System.Console::WriteLine(string) + IL_005c: ldstr "\ta{0}ba{1}a{2}a{3}" + IL_0061: ldc.i4.4 + IL_0062: newarr [mscorlib]System.Object + IL_0067: dup + IL_0068: ldc.i4.0 + IL_0069: ldarg.0 + IL_006a: ldlen + IL_006b: conv.i4 + IL_006c: box [mscorlib]System.Int32 + IL_0071: stelem.ref + IL_0072: dup + IL_0073: ldc.i4.1 + IL_0074: ldarg.0 + IL_0075: ldc.i4.0 + IL_0076: ldelem.ref + IL_0077: stelem.ref + IL_0078: dup + IL_0079: ldc.i4.2 + IL_007a: ldarg.0 + IL_007b: ldarg.0 + IL_007c: ldlen + IL_007d: conv.i4 + IL_007e: ldelem.ref + IL_007f: stelem.ref + IL_0080: dup + IL_0081: ldc.i4.3 + IL_0082: ldarg.0 + IL_0083: ldlen + IL_0084: conv.i4 + IL_0085: box [mscorlib]System.Int32 + IL_008a: stelem.ref + IL_008b: call string [mscorlib]System.String::Format(string, + object[]) + IL_0090: call void [mscorlib]System.Console::WriteLine(string) + IL_0095: ret + } // end of method CS6_StringInterpolation::General + + .method public hidebysig static void Invalid(string[] args) cil managed + { + // Code size 530 (0x212) + .maxstack 2 + IL_0000: ldstr "" + IL_0005: ldarg.0 + IL_0006: ldlen + IL_0007: conv.i4 + IL_0008: box [mscorlib]System.Int32 + IL_000d: call string [mscorlib]System.String::Format(string, + object) + IL_0012: call void [mscorlib]System.Console::WriteLine(string) + IL_0017: ldstr "a" + IL_001c: ldarg.0 + IL_001d: ldlen + IL_001e: conv.i4 + IL_001f: box [mscorlib]System.Int32 + IL_0024: call string [mscorlib]System.String::Format(string, + object) + IL_0029: call void [mscorlib]System.Console::WriteLine(string) + IL_002e: ldstr "}" + IL_0033: ldarg.0 + IL_0034: ldlen + IL_0035: conv.i4 + IL_0036: box [mscorlib]System.Int32 + IL_003b: call string [mscorlib]System.String::Format(string, + object) + IL_0040: call void [mscorlib]System.Console::WriteLine(string) + IL_0045: ldstr "{" + IL_004a: ldarg.0 + IL_004b: ldlen + IL_004c: conv.i4 + IL_004d: box [mscorlib]System.Int32 + IL_0052: call string [mscorlib]System.String::Format(string, + object) + IL_0057: call void [mscorlib]System.Console::WriteLine(string) + IL_005c: ldstr ":" + IL_0061: ldarg.0 + IL_0062: ldlen + IL_0063: conv.i4 + IL_0064: box [mscorlib]System.Int32 + IL_0069: call string [mscorlib]System.String::Format(string, + object) + IL_006e: call void [mscorlib]System.Console::WriteLine(string) + IL_0073: ldstr "\t" + IL_0078: ldarg.0 + IL_0079: ldlen + IL_007a: conv.i4 + IL_007b: box [mscorlib]System.Int32 + IL_0080: call string [mscorlib]System.String::Format(string, + object) + IL_0085: call void [mscorlib]System.Console::WriteLine(string) + IL_008a: ldstr "\\" + IL_008f: ldarg.0 + IL_0090: ldlen + IL_0091: conv.i4 + IL_0092: box [mscorlib]System.Int32 + IL_0097: call string [mscorlib]System.String::Format(string, + object) + IL_009c: call void [mscorlib]System.Console::WriteLine(string) + IL_00a1: ldstr "\"" + IL_00a6: ldarg.0 + IL_00a7: ldlen + IL_00a8: conv.i4 + IL_00a9: box [mscorlib]System.Int32 + IL_00ae: call string [mscorlib]System.String::Format(string, + object) + IL_00b3: call void [mscorlib]System.Console::WriteLine(string) + IL_00b8: ldstr "aa" + IL_00bd: ldarg.0 + IL_00be: ldlen + IL_00bf: conv.i4 + IL_00c0: box [mscorlib]System.Int32 + IL_00c5: call string [mscorlib]System.String::Format(string, + object) + IL_00ca: call void [mscorlib]System.Console::WriteLine(string) + IL_00cf: ldstr "a}" + IL_00d4: ldarg.0 + IL_00d5: ldlen + IL_00d6: conv.i4 + IL_00d7: box [mscorlib]System.Int32 + IL_00dc: call string [mscorlib]System.String::Format(string, + object) + IL_00e1: call void [mscorlib]System.Console::WriteLine(string) + IL_00e6: ldstr "a{" + IL_00eb: ldarg.0 + IL_00ec: ldlen + IL_00ed: conv.i4 + IL_00ee: box [mscorlib]System.Int32 + IL_00f3: call string [mscorlib]System.String::Format(string, + object) + IL_00f8: call void [mscorlib]System.Console::WriteLine(string) + IL_00fd: ldstr "a:" + IL_0102: ldarg.0 + IL_0103: ldlen + IL_0104: conv.i4 + IL_0105: box [mscorlib]System.Int32 + IL_010a: call string [mscorlib]System.String::Format(string, + object) + IL_010f: call void [mscorlib]System.Console::WriteLine(string) + IL_0114: ldstr "a\t" + IL_0119: ldarg.0 + IL_011a: ldlen + IL_011b: conv.i4 + IL_011c: box [mscorlib]System.Int32 + IL_0121: call string [mscorlib]System.String::Format(string, + object) + IL_0126: call void [mscorlib]System.Console::WriteLine(string) + IL_012b: ldstr "a\\" + IL_0130: ldarg.0 + IL_0131: ldlen + IL_0132: conv.i4 + IL_0133: box [mscorlib]System.Int32 + IL_0138: call string [mscorlib]System.String::Format(string, + object) + IL_013d: call void [mscorlib]System.Console::WriteLine(string) + IL_0142: ldstr "a\"" + IL_0147: ldarg.0 + IL_0148: ldlen + IL_0149: conv.i4 + IL_014a: box [mscorlib]System.Int32 + IL_014f: call string [mscorlib]System.String::Format(string, + object) + IL_0154: call void [mscorlib]System.Console::WriteLine(string) + IL_0159: ldstr "a{:" + IL_015e: ldarg.0 + IL_015f: ldlen + IL_0160: conv.i4 + IL_0161: box [mscorlib]System.Int32 + IL_0166: call string [mscorlib]System.String::Format(string, + object) + IL_016b: call void [mscorlib]System.Console::WriteLine(string) + IL_0170: ldstr "a{0" + IL_0175: ldarg.0 + IL_0176: ldlen + IL_0177: conv.i4 + IL_0178: box [mscorlib]System.Int32 + IL_017d: call string [mscorlib]System.String::Format(string, + object) + IL_0182: call void [mscorlib]System.Console::WriteLine(string) + IL_0187: ldstr "a{{0" + IL_018c: ldarg.0 + IL_018d: ldlen + IL_018e: conv.i4 + IL_018f: box [mscorlib]System.Int32 + IL_0194: call string [mscorlib]System.String::Format(string, + object) + IL_0199: call void [mscorlib]System.Console::WriteLine(string) + IL_019e: ldstr "}a{{0" + IL_01a3: ldarg.0 + IL_01a4: ldlen + IL_01a5: conv.i4 + IL_01a6: box [mscorlib]System.Int32 + IL_01ab: call string [mscorlib]System.String::Format(string, + object) + IL_01b0: call void [mscorlib]System.Console::WriteLine(string) + IL_01b5: ldstr "}{" + IL_01ba: ldarg.0 + IL_01bb: ldlen + IL_01bc: conv.i4 + IL_01bd: box [mscorlib]System.Int32 + IL_01c2: call string [mscorlib]System.String::Format(string, + object) + IL_01c7: call void [mscorlib]System.Console::WriteLine(string) + IL_01cc: ldstr "{}" + IL_01d1: ldarg.0 + IL_01d2: ldlen + IL_01d3: conv.i4 + IL_01d4: box [mscorlib]System.Int32 + IL_01d9: call string [mscorlib]System.String::Format(string, + object) + IL_01de: call void [mscorlib]System.Console::WriteLine(string) + IL_01e3: ldstr "{0:}" + IL_01e8: ldarg.0 + IL_01e9: ldlen + IL_01ea: conv.i4 + IL_01eb: box [mscorlib]System.Int32 + IL_01f0: call string [mscorlib]System.String::Format(string, + object) + IL_01f5: call void [mscorlib]System.Console::WriteLine(string) + IL_01fa: ldstr "{0{a}0}" + IL_01ff: ldarg.0 + IL_0200: ldlen + IL_0201: conv.i4 + IL_0202: box [mscorlib]System.Int32 + IL_0207: call string [mscorlib]System.String::Format(string, + object) + IL_020c: call void [mscorlib]System.Console::WriteLine(string) + IL_0211: ret + } // end of method CS6_StringInterpolation::Invalid + + .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 CS6_StringInterpolation::.ctor + +} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CS6_StringInterpolation + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CS6_StringInterpolation.roslyn.il b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CS6_StringInterpolation.roslyn.il new file mode 100644 index 000000000..b3113cf9d --- /dev/null +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CS6_StringInterpolation.roslyn.il @@ -0,0 +1,353 @@ + +// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 +// 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 CS6_StringInterpolation +{ + .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 CS6_StringInterpolation.dll +// MVID: {97DDF3A3-A5BD-433E-B982-F6DD427CE8FF} +.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: 0x03970000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class private auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.CS6_StringInterpolation + extends [mscorlib]System.Object +{ + .method public hidebysig static void General(string[] args) cil managed + { + // Code size 156 (0x9c) + .maxstack 6 + IL_0000: nop + IL_0001: ldstr "{0}" + IL_0006: ldarg.0 + IL_0007: ldlen + IL_0008: conv.i4 + IL_0009: box [mscorlib]System.Int32 + IL_000e: call string [mscorlib]System.String::Format(string, + object) + IL_0013: call void [mscorlib]System.Console::WriteLine(string) + IL_0018: nop + IL_0019: ldstr "a{{0{0}" + IL_001e: ldarg.0 + IL_001f: ldlen + IL_0020: conv.i4 + IL_0021: box [mscorlib]System.Int32 + IL_0026: call string [mscorlib]System.String::Format(string, + object) + IL_002b: call void [mscorlib]System.Console::WriteLine(string) + IL_0030: nop + IL_0031: ldstr "{0:x}" + IL_0036: ldarg.0 + IL_0037: ldlen + IL_0038: conv.i4 + IL_0039: box [mscorlib]System.Int32 + IL_003e: call string [mscorlib]System.String::Format(string, + object) + IL_0043: call void [mscorlib]System.Console::WriteLine(string) + IL_0048: nop + IL_0049: ldstr "\ta{0}b" + IL_004e: ldarg.0 + IL_004f: ldlen + IL_0050: conv.i4 + IL_0051: box [mscorlib]System.Int32 + IL_0056: call string [mscorlib]System.String::Format(string, + object) + IL_005b: call void [mscorlib]System.Console::WriteLine(string) + IL_0060: nop + IL_0061: ldstr "\ta{0}ba{1}a{2}a{3}" + IL_0066: ldc.i4.4 + IL_0067: newarr [mscorlib]System.Object + IL_006c: dup + IL_006d: ldc.i4.0 + IL_006e: ldarg.0 + IL_006f: ldlen + IL_0070: conv.i4 + IL_0071: box [mscorlib]System.Int32 + IL_0076: stelem.ref + IL_0077: dup + IL_0078: ldc.i4.1 + IL_0079: ldarg.0 + IL_007a: ldc.i4.0 + IL_007b: ldelem.ref + IL_007c: stelem.ref + IL_007d: dup + IL_007e: ldc.i4.2 + IL_007f: ldarg.0 + IL_0080: ldarg.0 + IL_0081: ldlen + IL_0082: conv.i4 + IL_0083: ldelem.ref + IL_0084: stelem.ref + IL_0085: dup + IL_0086: ldc.i4.3 + IL_0087: ldarg.0 + IL_0088: ldlen + IL_0089: conv.i4 + IL_008a: box [mscorlib]System.Int32 + IL_008f: stelem.ref + IL_0090: call string [mscorlib]System.String::Format(string, + object[]) + IL_0095: call void [mscorlib]System.Console::WriteLine(string) + IL_009a: nop + IL_009b: ret + } // end of method CS6_StringInterpolation::General + + .method public hidebysig static void Invalid(string[] args) cil managed + { + // Code size 554 (0x22a) + .maxstack 2 + IL_0000: nop + IL_0001: ldstr "" + IL_0006: ldarg.0 + IL_0007: ldlen + IL_0008: conv.i4 + IL_0009: box [mscorlib]System.Int32 + IL_000e: call string [mscorlib]System.String::Format(string, + object) + IL_0013: call void [mscorlib]System.Console::WriteLine(string) + IL_0018: nop + IL_0019: ldstr "a" + IL_001e: ldarg.0 + IL_001f: ldlen + IL_0020: conv.i4 + IL_0021: box [mscorlib]System.Int32 + IL_0026: call string [mscorlib]System.String::Format(string, + object) + IL_002b: call void [mscorlib]System.Console::WriteLine(string) + IL_0030: nop + IL_0031: ldstr "}" + IL_0036: ldarg.0 + IL_0037: ldlen + IL_0038: conv.i4 + IL_0039: box [mscorlib]System.Int32 + IL_003e: call string [mscorlib]System.String::Format(string, + object) + IL_0043: call void [mscorlib]System.Console::WriteLine(string) + IL_0048: nop + IL_0049: ldstr "{" + IL_004e: ldarg.0 + IL_004f: ldlen + IL_0050: conv.i4 + IL_0051: box [mscorlib]System.Int32 + IL_0056: call string [mscorlib]System.String::Format(string, + object) + IL_005b: call void [mscorlib]System.Console::WriteLine(string) + IL_0060: nop + IL_0061: ldstr ":" + IL_0066: ldarg.0 + IL_0067: ldlen + IL_0068: conv.i4 + IL_0069: box [mscorlib]System.Int32 + IL_006e: call string [mscorlib]System.String::Format(string, + object) + IL_0073: call void [mscorlib]System.Console::WriteLine(string) + IL_0078: nop + IL_0079: ldstr "\t" + IL_007e: ldarg.0 + IL_007f: ldlen + IL_0080: conv.i4 + IL_0081: box [mscorlib]System.Int32 + IL_0086: call string [mscorlib]System.String::Format(string, + object) + IL_008b: call void [mscorlib]System.Console::WriteLine(string) + IL_0090: nop + IL_0091: ldstr "\\" + IL_0096: ldarg.0 + IL_0097: ldlen + IL_0098: conv.i4 + IL_0099: box [mscorlib]System.Int32 + IL_009e: call string [mscorlib]System.String::Format(string, + object) + IL_00a3: call void [mscorlib]System.Console::WriteLine(string) + IL_00a8: nop + IL_00a9: ldstr "\"" + IL_00ae: ldarg.0 + IL_00af: ldlen + IL_00b0: conv.i4 + IL_00b1: box [mscorlib]System.Int32 + IL_00b6: call string [mscorlib]System.String::Format(string, + object) + IL_00bb: call void [mscorlib]System.Console::WriteLine(string) + IL_00c0: nop + IL_00c1: ldstr "aa" + IL_00c6: ldarg.0 + IL_00c7: ldlen + IL_00c8: conv.i4 + IL_00c9: box [mscorlib]System.Int32 + IL_00ce: call string [mscorlib]System.String::Format(string, + object) + IL_00d3: call void [mscorlib]System.Console::WriteLine(string) + IL_00d8: nop + IL_00d9: ldstr "a}" + IL_00de: ldarg.0 + IL_00df: ldlen + IL_00e0: conv.i4 + IL_00e1: box [mscorlib]System.Int32 + IL_00e6: call string [mscorlib]System.String::Format(string, + object) + IL_00eb: call void [mscorlib]System.Console::WriteLine(string) + IL_00f0: nop + IL_00f1: ldstr "a{" + IL_00f6: ldarg.0 + IL_00f7: ldlen + IL_00f8: conv.i4 + IL_00f9: box [mscorlib]System.Int32 + IL_00fe: call string [mscorlib]System.String::Format(string, + object) + IL_0103: call void [mscorlib]System.Console::WriteLine(string) + IL_0108: nop + IL_0109: ldstr "a:" + IL_010e: ldarg.0 + IL_010f: ldlen + IL_0110: conv.i4 + IL_0111: box [mscorlib]System.Int32 + IL_0116: call string [mscorlib]System.String::Format(string, + object) + IL_011b: call void [mscorlib]System.Console::WriteLine(string) + IL_0120: nop + IL_0121: ldstr "a\t" + IL_0126: ldarg.0 + IL_0127: ldlen + IL_0128: conv.i4 + IL_0129: box [mscorlib]System.Int32 + IL_012e: call string [mscorlib]System.String::Format(string, + object) + IL_0133: call void [mscorlib]System.Console::WriteLine(string) + IL_0138: nop + IL_0139: ldstr "a\\" + IL_013e: ldarg.0 + IL_013f: ldlen + IL_0140: conv.i4 + IL_0141: box [mscorlib]System.Int32 + IL_0146: call string [mscorlib]System.String::Format(string, + object) + IL_014b: call void [mscorlib]System.Console::WriteLine(string) + IL_0150: nop + IL_0151: ldstr "a\"" + IL_0156: ldarg.0 + IL_0157: ldlen + IL_0158: conv.i4 + IL_0159: box [mscorlib]System.Int32 + IL_015e: call string [mscorlib]System.String::Format(string, + object) + IL_0163: call void [mscorlib]System.Console::WriteLine(string) + IL_0168: nop + IL_0169: ldstr "a{:" + IL_016e: ldarg.0 + IL_016f: ldlen + IL_0170: conv.i4 + IL_0171: box [mscorlib]System.Int32 + IL_0176: call string [mscorlib]System.String::Format(string, + object) + IL_017b: call void [mscorlib]System.Console::WriteLine(string) + IL_0180: nop + IL_0181: ldstr "a{0" + IL_0186: ldarg.0 + IL_0187: ldlen + IL_0188: conv.i4 + IL_0189: box [mscorlib]System.Int32 + IL_018e: call string [mscorlib]System.String::Format(string, + object) + IL_0193: call void [mscorlib]System.Console::WriteLine(string) + IL_0198: nop + IL_0199: ldstr "a{{0" + IL_019e: ldarg.0 + IL_019f: ldlen + IL_01a0: conv.i4 + IL_01a1: box [mscorlib]System.Int32 + IL_01a6: call string [mscorlib]System.String::Format(string, + object) + IL_01ab: call void [mscorlib]System.Console::WriteLine(string) + IL_01b0: nop + IL_01b1: ldstr "}a{{0" + IL_01b6: ldarg.0 + IL_01b7: ldlen + IL_01b8: conv.i4 + IL_01b9: box [mscorlib]System.Int32 + IL_01be: call string [mscorlib]System.String::Format(string, + object) + IL_01c3: call void [mscorlib]System.Console::WriteLine(string) + IL_01c8: nop + IL_01c9: ldstr "}{" + IL_01ce: ldarg.0 + IL_01cf: ldlen + IL_01d0: conv.i4 + IL_01d1: box [mscorlib]System.Int32 + IL_01d6: call string [mscorlib]System.String::Format(string, + object) + IL_01db: call void [mscorlib]System.Console::WriteLine(string) + IL_01e0: nop + IL_01e1: ldstr "{}" + IL_01e6: ldarg.0 + IL_01e7: ldlen + IL_01e8: conv.i4 + IL_01e9: box [mscorlib]System.Int32 + IL_01ee: call string [mscorlib]System.String::Format(string, + object) + IL_01f3: call void [mscorlib]System.Console::WriteLine(string) + IL_01f8: nop + IL_01f9: ldstr "{0:}" + IL_01fe: ldarg.0 + IL_01ff: ldlen + IL_0200: conv.i4 + IL_0201: box [mscorlib]System.Int32 + IL_0206: call string [mscorlib]System.String::Format(string, + object) + IL_020b: call void [mscorlib]System.Console::WriteLine(string) + IL_0210: nop + IL_0211: ldstr "{0{a}0}" + IL_0216: ldarg.0 + IL_0217: ldlen + IL_0218: conv.i4 + IL_0219: box [mscorlib]System.Int32 + IL_021e: call string [mscorlib]System.String::Format(string, + object) + IL_0223: call void [mscorlib]System.Console::WriteLine(string) + IL_0228: nop + IL_0229: ret + } // end of method CS6_StringInterpolation::Invalid + + .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 CS6_StringInterpolation::.ctor + +} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.CS6_StringInterpolation + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE ***********************