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 ***********************