diff --git a/src/fsharp/tast.fs b/src/fsharp/tast.fs index 33fffda0a26..98a8710afb0 100644 --- a/src/fsharp/tast.fs +++ b/src/fsharp/tast.fs @@ -4060,7 +4060,7 @@ and [] AnonRecdTypeInfo = /// Get the ILTypeRef for the generated type implied by the anonymous type member x.ILTypeRef = - let ilTypeName = sprintf "<>f__AnonymousType%s%u`%d'" (match x.TupInfo with TupInfo.Const b -> if b then "1000" else "") (uint32 x.Stamp) x.SortedIds.Length + let ilTypeName = sprintf "<>f__AnonymousType%s%u`%d" (match x.TupInfo with TupInfo.Const b -> if b then "1000" else "") (uint32 x.Stamp) x.SortedIds.Length mkILTyRef(x.Assembly.ILScopeRef, ilTypeName) static member NewUnlinked() : AnonRecdTypeInfo = diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/AnonRecd.fs b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/AnonRecd.fs new file mode 100644 index 00000000000..74ad9e7c857 --- /dev/null +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/AnonRecd.fs @@ -0,0 +1,10 @@ + + +let main argv = + let mutable x = 1 + + let a = {| A = 1; B = 1 |} + + x <- x + 1 + + 0 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/AnonRecd.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/AnonRecd.il.bsl new file mode 100644 index 00000000000..af9a419018c --- /dev/null +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/AnonRecd.il.bsl @@ -0,0 +1,642 @@ + +// Microsoft (R) .NET Framework IL Disassembler. Version 4.7.3081.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 extern FSharp.Core +{ + .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: + .ver 4:6:0:0 +} +.assembly AnonRecd +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + // --- 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 01 01 00 00 00 00 ) + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.AnonRecd +{ + // Offset: 0x00000000 Length: 0x000001CE +} +.mresource public FSharpOptimizationData.AnonRecd +{ + // Offset: 0x000001D8 Length: 0x0000006B +} +.module AnonRecd.exe +// MVID: {5CBDEF61-C42F-5208-A745-038361EFBD5C} +.imagebase 0x00400000 +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 // WINDOWS_CUI +.corflags 0x00000001 // ILONLY +// Image base: 0x00D20000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public abstract auto ansi sealed AnonRecd + extends [mscorlib]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .method public static int32 main(!!a argv) cil managed + { + // Code size 16 (0x10) + .maxstack 4 + .locals init ([0] int32 x, + [1] class '<>f__AnonymousType1912756633`2' a) + .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' + .line 4,4 : 5,22 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\AnonRecd.fs' + IL_0000: ldc.i4.1 + IL_0001: stloc.0 + .line 6,6 : 5,31 '' + IL_0002: ldc.i4.1 + IL_0003: ldc.i4.1 + IL_0004: newobj instance void class '<>f__AnonymousType1912756633`2'::.ctor(!0, + !1) + IL_0009: stloc.1 + .line 8,8 : 5,15 '' + IL_000a: ldloc.0 + IL_000b: ldc.i4.1 + IL_000c: add + IL_000d: stloc.0 + .line 10,10 : 5,6 '' + IL_000e: ldc.i4.0 + IL_000f: ret + } // end of method AnonRecd::main + +} // end of class AnonRecd + +.class private abstract auto ansi sealed ''.$AnonRecd + extends [mscorlib]System.Object +{ + .method public static void main@() cil managed + { + .entrypoint + // Code size 1 (0x1) + .maxstack 8 + IL_0000: ret + } // end of method $AnonRecd::main@ + +} // end of class ''.$AnonRecd + +.class public auto ansi serializable sealed beforefieldinit '<>f__AnonymousType1912756633`2'<'j__TPar','j__TPar'> + extends [mscorlib]System.Object + implements [mscorlib]System.Collections.IStructuralComparable, + [mscorlib]System.IComparable, + class [mscorlib]System.IComparable`1f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>>, + [mscorlib]System.Collections.IStructuralEquatable, + class [mscorlib]System.IEquatable`1f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>> +{ + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 02 00 00 00 00 00 ) + .field private !'j__TPar' A@ + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field private !'j__TPar' B@ + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public specialname rtspecialname + instance void .ctor(!'j__TPar' A, + !'j__TPar' B) cil managed + { + // Code size 21 (0x15) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_000d: ldarg.0 + IL_000e: ldarg.2 + IL_000f: stfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0014: ret + } // end of method '<>f__AnonymousType1912756633`2'::.ctor + + .method public hidebysig specialname instance !'j__TPar' + get_A() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0006: ret + } // end of method '<>f__AnonymousType1912756633`2'::get_A + + .method public hidebysig specialname instance !'j__TPar' + get_B() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0006: ret + } // end of method '<>f__AnonymousType1912756633`2'::get_B + + .method public strict virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>,string>,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToStringf__AnonymousType1912756633`2'j__TPar',!'j__TPar'>,string>>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>,string>::Invoke(!0) + IL_0015: ret + } // end of method '<>f__AnonymousType1912756633`2'::ToString + + .method public hidebysig virtual final + instance int32 CompareTo(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 104 (0x68) + .maxstack 5 + .locals init ([0] int32 V_0) + .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\unknown' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0008 + + IL_0006: br.s IL_000a + + IL_0008: br.s IL_005a + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.1 + IL_000b: ldnull + IL_000c: cgt.un + IL_000e: brfalse.s IL_0012 + + IL_0010: br.s IL_0014 + + IL_0012: br.s IL_0058 + + .line 100001,100001 : 0,0 '' + IL_0014: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0019: ldarg.0 + IL_001a: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_001f: ldarg.1 + IL_0020: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0025: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericComparisonWithComparerj__TPar'>(class [mscorlib]System.Collections.IComparer, + !!0, + !!0) + IL_002a: stloc.0 + IL_002b: ldloc.0 + IL_002c: ldc.i4.0 + IL_002d: bge.s IL_0031 + + IL_002f: br.s IL_0033 + + IL_0031: br.s IL_0035 + + .line 100001,100001 : 0,0 '' + IL_0033: ldloc.0 + IL_0034: ret + + .line 100001,100001 : 0,0 '' + IL_0035: ldloc.0 + IL_0036: ldc.i4.0 + IL_0037: ble.s IL_003b + + IL_0039: br.s IL_003d + + IL_003b: br.s IL_003f + + .line 100001,100001 : 0,0 '' + IL_003d: ldloc.0 + IL_003e: ret + + .line 100001,100001 : 0,0 '' + IL_003f: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0044: ldarg.0 + IL_0045: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_004a: ldarg.1 + IL_004b: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0050: tail. + IL_0052: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericComparisonWithComparerj__TPar'>(class [mscorlib]System.Collections.IComparer, + !!0, + !!0) + IL_0057: ret + + .line 100001,100001 : 0,0 '' + IL_0058: ldc.i4.1 + IL_0059: ret + + .line 100001,100001 : 0,0 '' + IL_005a: ldarg.1 + IL_005b: ldnull + IL_005c: cgt.un + IL_005e: brfalse.s IL_0062 + + IL_0060: br.s IL_0064 + + IL_0062: br.s IL_0066 + + .line 100001,100001 : 0,0 '' + IL_0064: ldc.i4.m1 + IL_0065: ret + + .line 100001,100001 : 0,0 '' + IL_0066: ldc.i4.0 + IL_0067: ret + } // end of method '<>f__AnonymousType1912756633`2'::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 15 (0xf) + .maxstack 8 + .line 1,1 : 1,1 '' + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> + IL_0007: tail. + IL_0009: callvirt instance int32 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::CompareTo(class '<>f__AnonymousType1912756633`2') + IL_000e: ret + } // end of method '<>f__AnonymousType1912756633`2'::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [mscorlib]System.Collections.IComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 115 (0x73) + .maxstack 5 + .locals init ([0] class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_0, + [1] class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_1, + [2] int32 V_2) + .line 1,1 : 1,1 '' + IL_0000: ldarg.1 + IL_0001: unbox.any class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: stloc.1 + IL_0009: ldarg.0 + IL_000a: ldnull + IL_000b: cgt.un + IL_000d: brfalse.s IL_0011 + + IL_000f: br.s IL_0013 + + IL_0011: br.s IL_0060 + + .line 100001,100001 : 0,0 '' + IL_0013: ldarg.1 + IL_0014: unbox.any class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> + IL_0019: ldnull + IL_001a: cgt.un + IL_001c: brfalse.s IL_0020 + + IL_001e: br.s IL_0022 + + IL_0020: br.s IL_005e + + .line 100001,100001 : 0,0 '' + IL_0022: ldarg.2 + IL_0023: ldarg.0 + IL_0024: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0029: ldloc.1 + IL_002a: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_002f: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericComparisonWithComparerj__TPar'>(class [mscorlib]System.Collections.IComparer, + !!0, + !!0) + IL_0034: stloc.2 + IL_0035: ldloc.2 + IL_0036: ldc.i4.0 + IL_0037: bge.s IL_003b + + IL_0039: br.s IL_003d + + IL_003b: br.s IL_003f + + .line 100001,100001 : 0,0 '' + IL_003d: ldloc.2 + IL_003e: ret + + .line 100001,100001 : 0,0 '' + IL_003f: ldloc.2 + IL_0040: ldc.i4.0 + IL_0041: ble.s IL_0045 + + IL_0043: br.s IL_0047 + + IL_0045: br.s IL_0049 + + .line 100001,100001 : 0,0 '' + IL_0047: ldloc.2 + IL_0048: ret + + .line 100001,100001 : 0,0 '' + IL_0049: ldarg.2 + IL_004a: ldarg.0 + IL_004b: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0050: ldloc.1 + IL_0051: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0056: tail. + IL_0058: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericComparisonWithComparerj__TPar'>(class [mscorlib]System.Collections.IComparer, + !!0, + !!0) + IL_005d: ret + + .line 100001,100001 : 0,0 '' + IL_005e: ldc.i4.1 + IL_005f: ret + + .line 100001,100001 : 0,0 '' + IL_0060: ldarg.1 + IL_0061: unbox.any class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> + IL_0066: ldnull + IL_0067: cgt.un + IL_0069: brfalse.s IL_006d + + IL_006b: br.s IL_006f + + IL_006d: br.s IL_0071 + + .line 100001,100001 : 0,0 '' + IL_006f: ldc.i4.m1 + IL_0070: ret + + .line 100001,100001 : 0,0 '' + IL_0071: ldc.i4.0 + IL_0072: ret + } // end of method '<>f__AnonymousType1912756633`2'::CompareTo + + .method public hidebysig virtual final + instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 70 (0x46) + .maxstack 7 + .locals init ([0] int32 V_0) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0008 + + IL_0006: br.s IL_000a + + IL_0008: br.s IL_0044 + + .line 100001,100001 : 0,0 '' + IL_000a: ldc.i4.0 + IL_000b: stloc.0 + IL_000c: ldc.i4 0x9e3779b9 + IL_0011: ldarg.1 + IL_0012: ldarg.0 + IL_0013: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0018: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericHashWithComparerj__TPar'>(class [mscorlib]System.Collections.IEqualityComparer, + !!0) + IL_001d: ldloc.0 + IL_001e: ldc.i4.6 + IL_001f: shl + IL_0020: ldloc.0 + IL_0021: ldc.i4.2 + IL_0022: shr + IL_0023: add + IL_0024: add + IL_0025: add + IL_0026: stloc.0 + IL_0027: ldc.i4 0x9e3779b9 + IL_002c: ldarg.1 + IL_002d: ldarg.0 + IL_002e: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0033: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericHashWithComparerj__TPar'>(class [mscorlib]System.Collections.IEqualityComparer, + !!0) + IL_0038: ldloc.0 + IL_0039: ldc.i4.6 + IL_003a: shl + IL_003b: ldloc.0 + IL_003c: ldc.i4.2 + IL_003d: shr + IL_003e: add + IL_003f: add + IL_0040: add + IL_0041: stloc.0 + IL_0042: ldloc.0 + IL_0043: ret + + .line 100001,100001 : 0,0 '' + IL_0044: ldc.i4.0 + IL_0045: ret + } // end of method '<>f__AnonymousType1912756633`2'::GetHashCode + + .method public hidebysig virtual final + instance int32 GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 14 (0xe) + .maxstack 8 + .line 1,1 : 1,1 '' + IL_0000: ldarg.0 + IL_0001: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: tail. + IL_0008: callvirt instance int32 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_000d: ret + } // end of method '<>f__AnonymousType1912756633`2'::GetHashCode + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 83 (0x53) + .maxstack 5 + .locals init ([0] class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_0, + [1] class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_1) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0008 + + IL_0006: br.s IL_000a + + IL_0008: br.s IL_004b + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.1 + IL_000b: isinst class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> + IL_0010: stloc.0 + IL_0011: ldloc.0 + IL_0012: brfalse.s IL_0016 + + IL_0014: br.s IL_0018 + + IL_0016: br.s IL_0049 + + .line 100001,100001 : 0,0 '' + IL_0018: ldloc.0 + IL_0019: stloc.1 + IL_001a: ldarg.2 + IL_001b: ldarg.0 + IL_001c: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0021: ldloc.1 + IL_0022: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0027: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [mscorlib]System.Collections.IEqualityComparer, + !!0, + !!0) + IL_002c: brfalse.s IL_0030 + + IL_002e: br.s IL_0032 + + IL_0030: br.s IL_0047 + + .line 100001,100001 : 0,0 '' + IL_0032: ldarg.2 + IL_0033: ldarg.0 + IL_0034: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0039: ldloc.1 + IL_003a: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_003f: tail. + IL_0041: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [mscorlib]System.Collections.IEqualityComparer, + !!0, + !!0) + IL_0046: ret + + .line 100001,100001 : 0,0 '' + IL_0047: ldc.i4.0 + IL_0048: ret + + .line 100001,100001 : 0,0 '' + IL_0049: ldc.i4.0 + IL_004a: ret + + .line 100001,100001 : 0,0 '' + IL_004b: ldarg.1 + IL_004c: ldnull + IL_004d: cgt.un + IL_004f: ldc.i4.0 + IL_0050: ceq + IL_0052: ret + } // end of method '<>f__AnonymousType1912756633`2'::Equals + + .method public hidebysig virtual final + instance bool Equals(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 75 (0x4b) + .maxstack 4 + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0008 + + IL_0006: br.s IL_000a + + IL_0008: br.s IL_0043 + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.1 + IL_000b: ldnull + IL_000c: cgt.un + IL_000e: brfalse.s IL_0012 + + IL_0010: br.s IL_0014 + + IL_0012: br.s IL_0041 + + .line 100001,100001 : 0,0 '' + IL_0014: ldarg.0 + IL_0015: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_001a: ldarg.1 + IL_001b: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0020: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityERj__TPar'>(!!0, + !!0) + IL_0025: brfalse.s IL_0029 + + IL_0027: br.s IL_002b + + IL_0029: br.s IL_003f + + .line 100001,100001 : 0,0 '' + IL_002b: ldarg.0 + IL_002c: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0031: ldarg.1 + IL_0032: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0037: tail. + IL_0039: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityERj__TPar'>(!!0, + !!0) + IL_003e: ret + + .line 100001,100001 : 0,0 '' + IL_003f: ldc.i4.0 + IL_0040: ret + + .line 100001,100001 : 0,0 '' + IL_0041: ldc.i4.0 + IL_0042: ret + + .line 100001,100001 : 0,0 '' + IL_0043: ldarg.1 + IL_0044: ldnull + IL_0045: cgt.un + IL_0047: ldc.i4.0 + IL_0048: ceq + IL_004a: ret + } // end of method '<>f__AnonymousType1912756633`2'::Equals + + .method public hidebysig virtual final + instance bool Equals(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 26 (0x1a) + .maxstack 4 + .locals init ([0] class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_0) + .line 1,1 : 1,1 '' + IL_0000: ldarg.1 + IL_0001: isinst class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_000c + + IL_000a: br.s IL_000e + + IL_000c: br.s IL_0018 + + .line 100001,100001 : 0,0 '' + IL_000e: ldarg.0 + IL_000f: ldloc.0 + IL_0010: tail. + IL_0012: callvirt instance bool class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::Equals(class '<>f__AnonymousType1912756633`2') + IL_0017: ret + + .line 100001,100001 : 0,0 '' + IL_0018: ldc.i4.0 + IL_0019: ret + } // end of method '<>f__AnonymousType1912756633`2'::Equals + + .property instance !'j__TPar' A() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 ) + .get instance !'j__TPar' '<>f__AnonymousType1912756633`2'::get_A() + } // end of property '<>f__AnonymousType1912756633`2'::A + .property instance !'j__TPar' B() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 01 00 00 00 00 00 ) + .get instance !'j__TPar' '<>f__AnonymousType1912756633`2'::get_B() + } // end of property '<>f__AnonymousType1912756633`2'::B +} // end of class '<>f__AnonymousType1912756633`2' + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/env.lst b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/env.lst index 1a2d7883d52..06f54d7b01e 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/env.lst +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/env.lst @@ -1,53 +1,54 @@ - SOURCE=CodeGenRenamings01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd CodeGenRenamings01.exe" # CodeGenRenamings01.fs - + SOURCE=AnonRecd.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd AnonRecd.exe" # AnonRecd.fs + SOURCE=CodeGenRenamings01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd CodeGenRenamings01.exe" # CodeGenRenamings01.fs - SOURCE=ArgumentNamesInClosures01.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ArgumentNamesInClosures01.dll" # ArgumentNamesInClosures01.fs - - SOURCE=Decimal01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Decimal01.exe" # Decimal01.fs + SOURCE=Decimal01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Decimal01.exe" # Decimal01.fs - SOURCE=EntryPoint01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd EntryPoint01.exe" # EntryPoint01.fs + SOURCE=EntryPoint01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd EntryPoint01.exe" # EntryPoint01.fs - SOURCE=EqualsOnUnions01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd EqualsOnUnions01.exe" # EqualsOnUnions01.fs - + SOURCE=EqualsOnUnions01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd EqualsOnUnions01.exe" # EqualsOnUnions01.fs - - SOURCE=ForLoop01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForLoop01.exe" # ForLoop01.fs - + SOURCE=ForLoop01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForLoop01.exe" # ForLoop01.fs - - SOURCE=ForLoop02.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForLoop02.exe" # ForLoop02.fs - SOURCE=ForLoop03.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForLoop03.exe" # ForLoop03.fs - SOURCE=NoBoxingOnDispose01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NoBoxingOnDispose01.exe" # NoBoxingOnDispose01.fs + SOURCE=ForLoop02.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForLoop02.exe" # ForLoop02.fs + SOURCE=ForLoop03.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForLoop03.exe" # ForLoop03.fs + SOURCE=NoBoxingOnDispose01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NoBoxingOnDispose01.exe" # NoBoxingOnDispose01.fs - SOURCE=IfThenElse01.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd IfThenElse01.dll" # IfThenElse01.fs + SOURCE=IfThenElse01.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd IfThenElse01.dll" # IfThenElse01.fs - SOURCE=LetIfThenElse01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd LetIfThenElse01.exe" # LetIfThenElse01.fs - + SOURCE=LetIfThenElse01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd LetIfThenElse01.exe" # LetIfThenElse01.fs - - SOURCE=Lock01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Lock01.exe" # Lock01.fs - + SOURCE=Lock01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Lock01.exe" # Lock01.fs - - SOURCE=ModuleWithExpression01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ModuleWithExpression01.exe" # ModuleWithExpression01.fs + SOURCE=ModuleWithExpression01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ModuleWithExpression01.exe" # ModuleWithExpression01.fs - SOURCE=NonEscapingArguments02.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NonEscapingArguments02.dll" # NonEscapingArguments02.fs + SOURCE=NonEscapingArguments02.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NonEscapingArguments02.dll" # NonEscapingArguments02.fs - SOURCE=Seq_for_all01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Seq_for_all01.exe" # Seq_for_all01.fs + SOURCE=Seq_for_all01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Seq_for_all01.exe" # Seq_for_all01.fs - SOURCE=StructsAsArrayElements01.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd StructsAsArrayElements01.dll" # StructsAsArrayElements01.fs - + SOURCE=StructsAsArrayElements01.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd StructsAsArrayElements01.dll" # StructsAsArrayElements01.fs - - SOURCE=PreserveSig.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd PreserveSig.dll" # PreserveSig.fs - + SOURCE=PreserveSig.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd PreserveSig.dll" # PreserveSig.fs - # The name of this test is a bit misleading for legacy reasons: it used to test the --no-generate-filter-blocks option, which is now gone - SOURCE=TryWith_NoFilterBlocks01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd TryWith_NoFilterBlocks01.exe" # TryWith_NoFilterBlocks01.fs + SOURCE=TryWith_NoFilterBlocks01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd TryWith_NoFilterBlocks01.exe" # TryWith_NoFilterBlocks01.fs - SOURCE=Structs01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Structs01.exe" # Structs01.fs - - SOURCE=Structs02.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Structs02.exe" # Structs02.fs - + SOURCE=Structs01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Structs01.exe" # Structs01.fs - + SOURCE=Structs02.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Structs02.exe" # Structs02.fs - SOURCE=cas.fs PRECMD="\$CSC_PIPE /t:library /reference:System.Core.dll cas.cs" SCFLAGS="-r cas.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd cas.exe" # cas.fs - - SOURCE=Marshal.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Marshal.exe" # Marshal.fs - SOURCE=MethodImplNoInline.fs SCFLAGS="-O" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd MethodImplNoInline.exe" # MethodImplNoInline.fs - SOURCE=MethodImplNoInline02.fs SCFLAGS="-O" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd MethodImplNoInline02.exe" # MethodImplNoInline02.fs + SOURCE=Marshal.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Marshal.exe" # Marshal.fs + SOURCE=MethodImplNoInline.fs SCFLAGS="-O" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd MethodImplNoInline.exe" # MethodImplNoInline.fs + SOURCE=MethodImplNoInline02.fs SCFLAGS="-O" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd MethodImplNoInline02.exe" # MethodImplNoInline02.fs SOURCE=CustomAttributeGenericParameter01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd CustomAttributeGenericParameter01.exe" # CustomAttributeGenericParameter01.fs - # Need to create 2.0 baseline - SOURCE=GenericTypeStaticField01.fs SCFLAGS="-g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd GenericTypeStaticField01.exe" # GenericTypeStaticField01.fs - + SOURCE=GenericTypeStaticField01.fs SCFLAGS="-g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd GenericTypeStaticField01.exe" # GenericTypeStaticField01.fs - - SOURCE=GeneralizationOnUnions01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd GeneralizationOnUnions01.exe" # GeneralizationOnUnions01.fs + SOURCE=GeneralizationOnUnions01.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd GeneralizationOnUnions01.exe" # GeneralizationOnUnions01.fs - SOURCE=AbstractClass.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd AbstractClass.exe" # AbstractClass.fs + SOURCE=AbstractClass.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd AbstractClass.exe" # AbstractClass.fs diff --git a/tests/service/ProjectAnalysisTests.fs b/tests/service/ProjectAnalysisTests.fs index 517c542aa02..08f19cbe708 100644 --- a/tests/service/ProjectAnalysisTests.fs +++ b/tests/service/ProjectAnalysisTests.fs @@ -5103,48 +5103,48 @@ let ``Test project41 all symbols`` () = yield (s.Symbol.DisplayName, tups s.RangeAlternate, attribsOfSymbol s.Symbol, pos) ] allSymbolUsesInfo |> shouldEqual [("X", ((4, 19), (4, 20)), - ["field"; "anon(0, [//<>f__AnonymousType1416859829`1']X)"], (4, 19)); + ["field"; "anon(0, [//<>f__AnonymousType1416859829`1]X)"], (4, 19)); ("data1", ((4, 8), (4, 13)), ["val"], (4, 8)); ("int", ((7, 23), (7, 26)), ["abbrev"], (0, 0)); ("X", ((7, 19), (7, 20)), - ["field"; "anon(0, [//<>f__AnonymousType1416859829`1']X)"], (7, 19)); + ["field"; "anon(0, [//<>f__AnonymousType1416859829`1]X)"], (7, 19)); ("data1", ((7, 32), (7, 37)), ["val"], (4, 8)); ("data2", ((7, 8), (7, 13)), ["val"], (7, 8)); ("int", ((9, 20), (9, 23)), ["abbrev"], (0, 0)); ("X", ((9, 16), (9, 17)), - ["field"; "anon(0, [//<>f__AnonymousType1416859829`1']X)"], (9, 16)); + ["field"; "anon(0, [//<>f__AnonymousType1416859829`1]X)"], (9, 16)); ("int", ((9, 20), (9, 23)), ["abbrev"], (0, 0)); ("X", ((9, 16), (9, 17)), - ["field"; "anon(0, [//<>f__AnonymousType1416859829`1']X)"], (9, 16)); + ["field"; "anon(0, [//<>f__AnonymousType1416859829`1]X)"], (9, 16)); ("D", ((9, 9), (9, 10)), ["abbrev"], (9, 9)); ("int", ((12, 23), (12, 26)), ["abbrev"], (0, 0)); ("X", ((12, 19), (12, 20)), - ["field"; "anon(0, [//<>f__AnonymousType1416859829`1']X)"], (12, 19)); + ["field"; "anon(0, [//<>f__AnonymousType1416859829`1]X)"], (12, 19)); ("v", ((12, 12), (12, 13)), [], (12, 12)); ("v", ((12, 33), (12, 34)), [], (12, 12)); ("X", ((12, 33), (12, 36)), - ["field"; "anon(0, [//<>f__AnonymousType1416859829`1']X)"], (12, 19)); + ["field"; "anon(0, [//<>f__AnonymousType1416859829`1]X)"], (12, 19)); ("f1", ((12, 8), (12, 10)), ["val"], (12, 8)); ("D", ((15, 16), (15, 17)), ["abbrev"], (9, 9)); ("v", ((15, 12), (15, 13)), [], (15, 12)); ("v", ((15, 21), (15, 22)), [], (15, 12)); ("X", ((15, 21), (15, 24)), - ["field"; "anon(0, [//<>f__AnonymousType1416859829`1']X)"], (9, 16)); + ["field"; "anon(0, [//<>f__AnonymousType1416859829`1]X)"], (9, 16)); ("f2", ((15, 8), (15, 10)), ["val"], (15, 8)); ("int", ((18, 29), (18, 32)), ["abbrev"], (0, 0)); ("string", ((18, 38), (18, 44)), ["abbrev"], (0, 0)); ("X", ((18, 25), (18, 26)), - ["field"; "anon(0, [//<>f__AnonymousType4026451324`2']X,Y)"], (18, 25)); + ["field"; "anon(0, [//<>f__AnonymousType4026451324`2]X,Y)"], (18, 25)); ("Y", ((18, 34), (18, 35)), - ["field"; "anon(1, [//<>f__AnonymousType4026451324`2']X,Y)"], (18, 34)); + ["field"; "anon(1, [//<>f__AnonymousType4026451324`2]X,Y)"], (18, 34)); ("X", ((18, 19), (18, 20)), - ["field"; "anon(0, [//<>f__AnonymousType1416859829`1']X)"], (18, 19)); + ["field"; "anon(0, [//<>f__AnonymousType1416859829`1]X)"], (18, 19)); ("v", ((18, 12), (18, 13)), [], (18, 12)); ("v", ((18, 54), (18, 55)), [], (18, 12)); ("X", ((18, 56), (18, 57)), - ["field"; "anon(0, [//<>f__AnonymousType1416859829`1']X)"], (18, 19)); + ["field"; "anon(0, [//<>f__AnonymousType1416859829`1]X)"], (18, 19)); ("X", ((18, 54), (18, 59)), - ["field"; "anon(0, [//<>f__AnonymousType4026451324`2']X,Y)"], (18, 25)); + ["field"; "anon(0, [//<>f__AnonymousType4026451324`2]X,Y)"], (18, 25)); ("f3", ((18, 8), (18, 10)), ["val"], (18, 8)); ("M", ((2, 7), (2, 8)), ["module"], (2, 7))]