diff --git a/eng/Versions.props b/eng/Versions.props index 2ec16822aa9..9bc5e185e36 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -14,17 +14,17 @@ beta 4.7 $(FSLanguageVersion) - $(FSCoreMajorVersion).2 + $(FSCoreMajorVersion).3 $(FSCoreMajorVersion).0 $(FSCoreVersionPrefix).0 - 4.7.1 + 4.7.2 $(FSCorePackageVersion)-$(PreReleaseVersionLabel).* - 10.9 - $(FSPackageMajorVersion).1 + 10.10 + $(FSPackageMajorVersion).0 $(FSPackageVersion) $(FSPackageVersion).0 diff --git a/src/absil/ilread.fs b/src/absil/ilread.fs index c5338db90f4..6a0c2ffdfa1 100644 --- a/src/absil/ilread.fs +++ b/src/absil/ilread.fs @@ -199,17 +199,17 @@ let seekReadUInt16AsInt32 mdv addr = int32 (seekReadUInt16 mdv addr) let seekReadCompressedUInt32 mdv addr = let b0 = seekReadByte mdv addr - if b0 <= 0x7Fuy then int b0, addr+1 + if b0 <= 0x7Fuy then struct (int b0, addr+1) elif b0 <= 0xBFuy then let b0 = b0 &&& 0x7Fuy let b1 = seekReadByteAsInt32 mdv (addr+1) - (int b0 <<< 8) ||| int b1, addr+2 + struct ((int b0 <<< 8) ||| int b1, addr+2) else let b0 = b0 &&& 0x3Fuy let b1 = seekReadByteAsInt32 mdv (addr+1) let b2 = seekReadByteAsInt32 mdv (addr+2) let b3 = seekReadByteAsInt32 mdv (addr+3) - (int b0 <<< 24) ||| (int b1 <<< 16) ||| (int b2 <<< 8) ||| int b3, addr+4 + struct ((int b0 <<< 24) ||| (int b1 <<< 16) ||| (int b2 <<< 8) ||| int b3, addr+4) let seekReadSByte mdv addr = sbyte (seekReadByte mdv addr) let seekReadSingle mdv addr = singleOfBits (seekReadInt32 mdv addr) @@ -226,11 +226,11 @@ let seekReadUTF8String mdv addr = System.Text.Encoding.UTF8.GetString (bytes, 0, bytes.Length) let seekReadBlob mdv addr = - let len, addr = seekReadCompressedUInt32 mdv addr + let struct (len, addr) = seekReadCompressedUInt32 mdv addr seekReadBytes mdv addr len let seekReadUserString mdv addr = - let len, addr = seekReadCompressedUInt32 mdv addr + let struct (len, addr) = seekReadCompressedUInt32 mdv addr let bytes = seekReadBytes mdv addr (len - 1) Encoding.Unicode.GetString(bytes, 0, bytes.Length) @@ -1550,11 +1550,10 @@ and readBlobHeapAsTypeName ctxt (nameIdx, namespaceIdx) = and seekReadTypeDefRowExtents (ctxt: ILMetadataReader) _info (idx: int) = if idx >= ctxt.getNumRows TableNames.TypeDef then - ctxt.getNumRows TableNames.Field + 1, - ctxt.getNumRows TableNames.Method + 1 + struct (ctxt.getNumRows TableNames.Field + 1, ctxt.getNumRows TableNames.Method + 1) else let (_, _, _, _, fieldsIdx, methodsIdx) = seekReadTypeDefRow ctxt (idx + 1) - fieldsIdx, methodsIdx + struct (fieldsIdx, methodsIdx ) and seekReadTypeDefRowWithExtents ctxt (idx: int) = let info= seekReadTypeDefRow ctxt idx @@ -1578,7 +1577,7 @@ and typeDefReader ctxtH: ILTypeDefStored = let ((flags, nameIdx, namespaceIdx, extendsIdx, fieldsIdx, methodsIdx) as info) = seekReadTypeDefRow ctxt idx let nm = readBlobHeapAsTypeName ctxt (nameIdx, namespaceIdx) - let (endFieldsIdx, endMethodsIdx) = seekReadTypeDefRowExtents ctxt info idx + let struct (endFieldsIdx, endMethodsIdx) = seekReadTypeDefRowExtents ctxt info idx let typars = seekReadGenericParams ctxt 0 (tomd_TypeDef, idx) let numtypars = typars.Length let super = seekReadOptionalTypeDefOrRef ctxt numtypars AsObject extendsIdx diff --git a/src/fsharp/CompileOps.fs b/src/fsharp/CompileOps.fs index 1ae2d315076..50a8c9481ec 100644 --- a/src/fsharp/CompileOps.fs +++ b/src/fsharp/CompileOps.fs @@ -821,7 +821,7 @@ let OutputPhasedErrorR (os: StringBuilder) (err: PhasedDiagnostic) (canSuggestNa let nameOrOneBasedIndexMessage = x.calledArg.NameOpt |> Option.map (fun n -> FSComp.SR.csOverloadCandidateNamedArgumentTypeMismatch n.idText) - |> Option.defaultValue (FSComp.SR.csOverloadCandidateIndexedArgumentTypeMismatch ((snd x.calledArg.Position) + 1)) + |> Option.defaultValue (FSComp.SR.csOverloadCandidateIndexedArgumentTypeMismatch ((Lib.vsnd x.calledArg.Position) + 1)) //snd sprintf " // %s" nameOrOneBasedIndexMessage | _ -> "" diff --git a/src/fsharp/FSharp.Build/Fsc.fs b/src/fsharp/FSharp.Build/Fsc.fs index a6e262089b5..2b491c73837 100644 --- a/src/fsharp/FSharp.Build/Fsc.fs +++ b/src/fsharp/FSharp.Build/Fsc.fs @@ -589,7 +589,7 @@ type public Fsc () as this = override fsc.GenerateResponseFileCommands() = let builder = generateCommandLineBuilder () - builder.GetCapturedArguments() |> Seq.fold(fun acc f -> acc + f + Environment.NewLine) "" + builder.GetCapturedArguments() |> String.concat Environment.NewLine // expose this to internal components (for nunit testing) member internal fsc.InternalGenerateCommandLineCommands() = diff --git a/src/fsharp/FSharp.Build/Fsi.fs b/src/fsharp/FSharp.Build/Fsi.fs index ed1aae5e132..1b893cbac60 100644 --- a/src/fsharp/FSharp.Build/Fsi.fs +++ b/src/fsharp/FSharp.Build/Fsi.fs @@ -322,7 +322,7 @@ type public Fsi () as this = override fsi.GenerateResponseFileCommands() = let builder = generateCommandLineBuilder () - builder.GetCapturedArguments() |> Seq.fold(fun acc f -> acc + f + Environment.NewLine) "" + builder.GetCapturedArguments() |> String.concat Environment.NewLine // expose this to internal components (for nunit testing) member internal fsi.InternalGenerateCommandLineCommands() = diff --git a/src/fsharp/FSharp.Core/prim-types.fs b/src/fsharp/FSharp.Core/prim-types.fs index 78441e75df8..d4838419faf 100644 --- a/src/fsharp/FSharp.Core/prim-types.fs +++ b/src/fsharp/FSharp.Core/prim-types.fs @@ -1045,6 +1045,7 @@ namespace Microsoft.FSharp.Core // gives reliable results on null values. System.String.CompareOrdinal((# "" x : string #),(# "" y : string #)) when 'T : decimal = System.Decimal.Compare((# "" x:decimal #), (# "" y:decimal #)) + when 'T : DateTime = System.DateTime.Compare((# "" x : DateTime #), (# "" y : DateTime #)) /// Generic comparison. Implements ER mode (where "0" is returned when NaNs are compared) @@ -1123,6 +1124,7 @@ namespace Microsoft.FSharp.Core // gives reliable results on null values. System.String.CompareOrdinal((# "" x : string #),(# "" y : string #)) when 'T : decimal = System.Decimal.Compare((# "" x:decimal #), (# "" y:decimal #)) + when 'T : DateTime = System.DateTime.Compare((# "" x : DateTime #), (# "" y : DateTime #)) /// Generic less-than with static optimizations for some well-known cases. let inline GenericLessThanFast (x:'T) (y:'T) = @@ -1142,6 +1144,7 @@ namespace Microsoft.FSharp.Core when 'T : float32= (# "clt" x y : bool #) when 'T : char = (# "clt" x y : bool #) when 'T : decimal = System.Decimal.op_LessThan ((# "" x:decimal #), (# "" y:decimal #)) + when 'T : DateTime = DateTime.Compare((# "" x : DateTime #), (# "" y : DateTime #)) < 0 /// Generic greater-than with static optimizations for some well-known cases. let inline GenericGreaterThanFast (x:'T) (y:'T) = @@ -1161,6 +1164,7 @@ namespace Microsoft.FSharp.Core when 'T : float32 = (# "cgt" x y : bool #) when 'T : char = (# "cgt" x y : bool #) when 'T : decimal = System.Decimal.op_GreaterThan ((# "" x:decimal #), (# "" y:decimal #)) + when 'T : DateTime = DateTime.Compare((# "" x : DateTime #), (# "" y : DateTime #)) > 0 /// Generic less-than-or-equal with static optimizations for some well-known cases. let inline GenericLessOrEqualFast (x:'T) (y:'T) = @@ -1180,6 +1184,7 @@ namespace Microsoft.FSharp.Core when 'T : float32 = not (# "cgt.un" x y : bool #) when 'T : char = not(# "cgt" x y : bool #) when 'T : decimal = System.Decimal.op_LessThanOrEqual ((# "" x:decimal #), (# "" y:decimal #)) + when 'T : DateTime = DateTime.Compare((# "" x : DateTime #), (# "" y : DateTime #)) <= 0 /// Generic greater-than-or-equal with static optimizations for some well-known cases. let inline GenericGreaterOrEqualFast (x:'T) (y:'T) = @@ -1199,6 +1204,8 @@ namespace Microsoft.FSharp.Core when 'T : float32 = not (# "clt.un" x y : bool #) when 'T : char = not (# "clt" x y : bool #) when 'T : decimal = System.Decimal.op_GreaterThanOrEqual ((# "" x:decimal #), (# "" y:decimal #)) + + when 'T : DateTime = DateTime.Compare((# "" x : DateTime #), (# "" y : DateTime #)) >= 0 //------------------------------------------------------------------------- @@ -1482,6 +1489,7 @@ namespace Microsoft.FSharp.Core when 'T : char = (# "ceq" x y : bool #) when 'T : string = System.String.Equals((# "" x : string #),(# "" y : string #)) when 'T : decimal = System.Decimal.op_Equality((# "" x:decimal #), (# "" y:decimal #)) + when 'T : DateTime = DateTime.Equals((# "" x : DateTime #), (# "" y : DateTime #)) /// Implements generic equality between two values, with PER semantics for NaN (so equality on two NaN values returns false) // @@ -1504,6 +1512,8 @@ namespace Microsoft.FSharp.Core when 'T : unativeint = (# "ceq" x y : bool #) when 'T : string = System.String.Equals((# "" x : string #),(# "" y : string #)) when 'T : decimal = System.Decimal.op_Equality((# "" x:decimal #), (# "" y:decimal #)) + when 'T : DateTime = DateTime.Equals((# "" x : DateTime #), (# "" y : DateTime #)) + /// A compiler intrinsic generated during optimization of calls to GenericEqualityIntrinsic on tuple values. // @@ -1530,6 +1540,7 @@ namespace Microsoft.FSharp.Core when 'T : unativeint = (# "ceq" x y : bool #) when 'T : string = System.String.Equals((# "" x : string #),(# "" y : string #)) when 'T : decimal = System.Decimal.op_Equality((# "" x:decimal #), (# "" y:decimal #)) + when 'T : DateTime = DateTime.Equals((# "" x : DateTime #), (# "" y : DateTime #)) let inline GenericInequalityFast (x:'T) (y:'T) = (not(GenericEqualityFast x y) : bool) diff --git a/src/fsharp/MethodCalls.fs b/src/fsharp/MethodCalls.fs index 1d2d8910301..f3fc512511f 100644 --- a/src/fsharp/MethodCalls.fs +++ b/src/fsharp/MethodCalls.fs @@ -61,7 +61,7 @@ type CallerArg<'T> = /// Represents the information about an argument in the method being called type CalledArg = - { Position: (int * int) + { Position: struct (int * int) IsParamArray : bool OptArgInfo : OptionalArgInfo CallerInfo : CallerInfo @@ -303,7 +303,7 @@ let MakeCalledArgs amap m (minfo: MethInfo) minst = // Mark up the arguments with their position, so we can sort them back into order later let paramDatas = minfo.GetParamDatas(amap, m, minst) paramDatas |> List.mapiSquared (fun i j (ParamData(isParamArrayArg, isInArg, isOutArg, optArgInfo, callerInfoFlags, nmOpt, reflArgInfo, typeOfCalledArg)) -> - { Position=(i,j) + { Position=struct(i,j) IsParamArray=isParamArrayArg OptArgInfo=optArgInfo CallerInfo = callerInfoFlags diff --git a/src/fsharp/lib.fs b/src/fsharp/lib.fs index 596cd1a2f0a..5d8649d561f 100755 --- a/src/fsharp/lib.fs +++ b/src/fsharp/lib.fs @@ -564,3 +564,4 @@ type MaybeLazy<'T> = | Strict x -> x | Lazy x -> x.Force() +let inline vsnd ((_, y): struct('T * 'T)) = y \ No newline at end of file diff --git a/src/fsharp/service/ServiceLexing.fs b/src/fsharp/service/ServiceLexing.fs index 2b223e8a8ab..8e93e37205c 100755 --- a/src/fsharp/service/ServiceLexing.fs +++ b/src/fsharp/service/ServiceLexing.fs @@ -616,7 +616,7 @@ type FSharpLineTokenizer(lexbuf: UnicodeLexing.Lexbuf, | Some mx when rightp.Line > leftp.Line -> mx | _ -> rightp.Column let rightc = rightc - 1 - leftc, rightc + struct (leftc, rightc) // Get the token & position - either from a stack or from the lexer try @@ -624,7 +624,7 @@ type FSharpLineTokenizer(lexbuf: UnicodeLexing.Lexbuf, else // Choose which lexer entry point to call and call it let token = LexerStateEncoding.callLexCont lexcontInitial lexargs skip lexbuf - let leftc, rightc = ColumnsOfCurrentToken() + let struct (leftc, rightc) = ColumnsOfCurrentToken() // Splits tokens like ">." into multiple tokens - this duplicates behavior from the 'lexfilter' // which cannot be (easily) used from the language service. The rules here are not always valid, diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Select01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Select01.il.bsl index 8afae23a726..09112a769f4 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Select01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Select01.il.bsl @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.8.3928.0 // Copyright (c) Microsoft Corporation. All rights reserved. @@ -13,7 +13,7 @@ .assembly extern FSharp.Core { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 4:5:0:0 + .ver 4:7:0:0 } .assembly extern Utils { @@ -33,20 +33,20 @@ } .mresource public FSharpSignatureData.Linq101Select01 { - // Offset: 0x00000000 Length: 0x00000663 + // Offset: 0x00000000 Length: 0x00000655 } .mresource public FSharpOptimizationData.Linq101Select01 { - // Offset: 0x00000668 Length: 0x00000204 + // Offset: 0x00000660 Length: 0x00000204 } .module Linq101Select01.exe -// MVID: {5B9A632A-6057-8F80-A745-03832A639A5B} +// MVID: {5ECD8279-6057-8F80-A745-03837982CD5E} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x00FF0000 +// Image base: 0x058D0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -77,7 +77,7 @@ .maxstack 5 .locals init ([0] int32 n) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 12,12 : 9,28 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\Source\\CodeGen\\EmittedIL\\QueryExpressionStepping\\Linq101Select01.fs' + .line 12,12 : 9,28 'C:\\kevinransom\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\QueryExpressionStepping\\Linq101Select01.fs' IL_0000: ldarg.1 IL_0001: stloc.0 .line 13,13 : 9,23 '' @@ -2535,7 +2535,7 @@ } // end of class 'pairs@75-3' - .class auto ansi serializable sealed nested assembly beforefieldinit 'orders@83-3' + .class auto ansi serializable sealed nested assembly beforefieldinit 'orders@83-1' extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,object>> { .field public class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@ @@ -2555,12 +2555,12 @@ IL_0001: call instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,object>>::.ctor() IL_0006: ldarg.0 IL_0007: ldarg.1 - IL_0008: stfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@83-3'::builder@ + IL_0008: stfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@83-1'::builder@ IL_000d: ldarg.0 IL_000e: ldarg.2 - IL_000f: stfld class [Utils]Utils/Customer Linq101Select01/'orders@83-3'::c + IL_000f: stfld class [Utils]Utils/Customer Linq101Select01/'orders@83-1'::c IL_0014: ret - } // end of method 'orders@83-3'::.ctor + } // end of method 'orders@83-1'::.ctor .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed @@ -2573,20 +2573,20 @@ IL_0001: stloc.0 .line 84,84 : 9,34 '' IL_0002: ldarg.0 - IL_0003: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@83-3'::builder@ + IL_0003: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@83-1'::builder@ IL_0008: ldarg.0 - IL_0009: ldfld class [Utils]Utils/Customer Linq101Select01/'orders@83-3'::c + IL_0009: ldfld class [Utils]Utils/Customer Linq101Select01/'orders@83-1'::c IL_000e: ldloc.0 IL_000f: newobj instance void class [mscorlib]System.Tuple`2::.ctor(!0, !1) IL_0014: tail. IL_0016: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Yield,object>(!!0) IL_001b: ret - } // end of method 'orders@83-3'::Invoke + } // end of method 'orders@83-1'::Invoke - } // end of class 'orders@83-3' + } // end of class 'orders@83-1' - .class auto ansi serializable sealed nested assembly beforefieldinit 'orders@82-2' + .class auto ansi serializable sealed nested assembly beforefieldinit orders@82 extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [mscorlib]System.Collections.IEnumerable>> { .field public class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@ @@ -2604,9 +2604,9 @@ IL_0001: call instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [mscorlib]System.Collections.IEnumerable>>::.ctor() IL_0006: ldarg.0 IL_0007: ldarg.1 - IL_0008: stfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@82-2'::builder@ + IL_0008: stfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/orders@82::builder@ IL_000d: ret - } // end of method 'orders@82-2'::.ctor + } // end of method orders@82::.ctor .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed @@ -2619,26 +2619,26 @@ IL_0001: stloc.0 .line 83,83 : 9,29 '' IL_0002: ldarg.0 - IL_0003: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@82-2'::builder@ + IL_0003: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/orders@82::builder@ IL_0008: ldarg.0 - IL_0009: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@82-2'::builder@ + IL_0009: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/orders@82::builder@ IL_000e: ldloc.0 IL_000f: callvirt instance class [Utils]Utils/Order[] [Utils]Utils/Customer::get_Orders() IL_0014: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) IL_0019: ldarg.0 - IL_001a: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@82-2'::builder@ + IL_001a: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/orders@82::builder@ IL_001f: ldloc.0 - IL_0020: newobj instance void Linq101Select01/'orders@83-3'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder, + IL_0020: newobj instance void Linq101Select01/'orders@83-1'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder, class [Utils]Utils/Customer) IL_0025: tail. IL_0027: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,object>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) IL_002c: ret - } // end of method 'orders@82-2'::Invoke + } // end of method orders@82::Invoke - } // end of class 'orders@82-2' + } // end of class orders@82 - .class auto ansi serializable sealed nested assembly beforefieldinit 'orders@84-4' + .class auto ansi serializable sealed nested assembly beforefieldinit 'orders@84-2' extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .method assembly specialname rtspecialname @@ -2651,7 +2651,7 @@ IL_0000: ldarg.0 IL_0001: call instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool>::.ctor() IL_0006: ret - } // end of method 'orders@84-4'::.ctor + } // end of method 'orders@84-2'::.ctor .method public strict virtual instance bool Invoke(class [mscorlib]System.Tuple`2 tupledArg) cil managed @@ -2683,11 +2683,11 @@ IL_0022: call bool [mscorlib]System.Decimal::op_LessThan(valuetype [mscorlib]System.Decimal, valuetype [mscorlib]System.Decimal) IL_0027: ret - } // end of method 'orders@84-4'::Invoke + } // end of method 'orders@84-2'::Invoke - } // end of class 'orders@84-4' + } // end of class 'orders@84-2' - .class auto ansi serializable sealed nested assembly beforefieldinit 'orders@85-5' + .class auto ansi serializable sealed nested assembly beforefieldinit 'orders@85-3' extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [mscorlib]System.Tuple`3> { .method assembly specialname rtspecialname @@ -2700,7 +2700,7 @@ IL_0000: ldarg.0 IL_0001: call instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [mscorlib]System.Tuple`3>::.ctor() IL_0006: ret - } // end of method 'orders@85-5'::.ctor + } // end of method 'orders@85-3'::.ctor .method public strict virtual instance class [mscorlib]System.Tuple`3 Invoke(class [mscorlib]System.Tuple`2 tupledArg) cil managed @@ -2727,9 +2727,9 @@ !1, !2) IL_0025: ret - } // end of method 'orders@85-5'::Invoke + } // end of method 'orders@85-3'::Invoke - } // end of class 'orders@85-5' + } // end of class 'orders@85-3' .class auto ansi serializable sealed nested assembly beforefieldinit 'orders2@92-1' extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,object>> @@ -2852,10 +2852,12 @@ .method public strict virtual instance bool Invoke(class [mscorlib]System.Tuple`2 tupledArg) cil managed { - // Code size 40 (0x28) - .maxstack 8 + // Code size 48 (0x30) + .maxstack 7 .locals init ([0] class [Utils]Utils/Customer c, - [1] class [Utils]Utils/Order o) + [1] class [Utils]Utils/Order o, + [2] valuetype [mscorlib]System.DateTime V_2, + [3] valuetype [mscorlib]System.DateTime V_3) .line 100001,100001 : 0,0 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() @@ -2866,16 +2868,23 @@ .line 93,93 : 16,50 '' IL_000e: ldloc.1 IL_000f: callvirt instance valuetype [mscorlib]System.DateTime [Utils]Utils/Order::get_OrderDate() - IL_0014: ldc.i4 0x7ce - IL_0019: ldc.i4.1 + IL_0014: stloc.2 + IL_0015: ldc.i4 0x7ce IL_001a: ldc.i4.1 - IL_001b: newobj instance void [mscorlib]System.DateTime::.ctor(int32, + IL_001b: ldc.i4.1 + IL_001c: newobj instance void [mscorlib]System.DateTime::.ctor(int32, int32, int32) - IL_0020: tail. - IL_0022: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericGreaterOrEqualIntrinsic(!!0, - !!0) - IL_0027: ret + IL_0021: stloc.3 + IL_0022: ldloc.2 + IL_0023: ldloc.3 + IL_0024: call int32 [mscorlib]System.DateTime::Compare(valuetype [mscorlib]System.DateTime, + valuetype [mscorlib]System.DateTime) + IL_0029: ldc.i4.0 + IL_002a: clt + IL_002c: ldc.i4.0 + IL_002d: ceq + IL_002f: ret } // end of method 'orders2@93-2'::Invoke } // end of class 'orders2@93-2' @@ -3313,10 +3322,12 @@ .method public strict virtual instance bool Invoke(class [mscorlib]System.Tuple`2 tupledArg) cil managed { - // Code size 33 (0x21) + // Code size 41 (0x29) .maxstack 6 .locals init ([0] class [Utils]Utils/Customer c, - [1] class [Utils]Utils/Order o) + [1] class [Utils]Utils/Order o, + [2] valuetype [mscorlib]System.DateTime V_2, + [3] valuetype [mscorlib]System.DateTime V_3) .line 100001,100001 : 0,0 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() @@ -3327,11 +3338,18 @@ .line 114,114 : 16,41 '' IL_000e: ldloc.1 IL_000f: callvirt instance valuetype [mscorlib]System.DateTime [Utils]Utils/Order::get_OrderDate() - IL_0014: call valuetype [mscorlib]System.DateTime Linq101Select01::get_cutOffDate() - IL_0019: tail. - IL_001b: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericGreaterOrEqualIntrinsic(!!0, - !!0) - IL_0020: ret + IL_0014: stloc.2 + IL_0015: call valuetype [mscorlib]System.DateTime Linq101Select01::get_cutOffDate() + IL_001a: stloc.3 + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: call int32 [mscorlib]System.DateTime::Compare(valuetype [mscorlib]System.DateTime, + valuetype [mscorlib]System.DateTime) + IL_0022: ldc.i4.0 + IL_0023: clt + IL_0025: ldc.i4.0 + IL_0026: ceq + IL_0028: ret } // end of method 'orders4@114-4'::Invoke } // end of class 'orders4@114-4' @@ -3382,7 +3400,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'numbers@7-9' + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::numbers@7 IL_0005: ret } // end of method Linq101Select01::get_numbers @@ -3400,7 +3418,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'products@17-12' + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::products@17 IL_0005: ret } // end of method Linq101Select01::get_products @@ -3418,7 +3436,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'strings@26-2' + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::strings@26 IL_0005: ret } // end of method Linq101Select01::get_strings @@ -3436,7 +3454,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'words@34-8' + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::words@34 IL_0005: ret } // end of method Linq101Select01::get_words @@ -3472,7 +3490,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'digits@57-4' + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::digits@57 IL_0005: ret } // end of method Linq101Select01::get_digits @@ -3517,7 +3535,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'customers@79-4' + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::customers@79 IL_0005: ret } // end of method Linq101Select01::get_customers @@ -3697,19 +3715,19 @@ .class private abstract auto ansi sealed ''.$Linq101Select01 extends [mscorlib]System.Object { - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'numbers@7-9' + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 numbers@7 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 numsPlusOne@10 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'products@17-12' + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 products@17 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [mscorlib]System.Collections.Generic.IEnumerable`1 productNames@19 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'strings@26-2' + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 strings@26 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 textNums@27 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'words@34-8' + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 words@34 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [mscorlib]System.Tuple`2[] upperLowerWords@36 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) @@ -3717,7 +3735,7 @@ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [mscorlib]System.Tuple`3[] productInfos@50 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'digits@57-4' + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 digits@57 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 lowNums@58 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) @@ -3727,7 +3745,7 @@ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [mscorlib]System.Tuple`2[] pairs@70 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'customers@79-4' + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 customers@79 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [mscorlib]System.Tuple`3[] orders@80 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) @@ -3816,7 +3834,7 @@ IL_003d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) IL_0042: dup - IL_0043: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'numbers@7-9' + IL_0043: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::numbers@7 IL_0048: stloc.0 .line 10,14 : 1,20 '' IL_0049: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() @@ -3834,7 +3852,7 @@ .line 17,17 : 1,32 '' IL_0064: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [Utils]Utils::getProductList() IL_0069: dup - IL_006a: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'products@17-12' + IL_006a: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::products@17 IL_006f: stloc.2 IL_0070: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_0075: stloc.s V_22 @@ -3880,7 +3898,7 @@ IL_00ea: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) IL_00ef: dup - IL_00f0: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'strings@26-2' + IL_00f0: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::strings@26 IL_00f5: stloc.s strings .line 27,31 : 1,20 '' IL_00f7: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() @@ -3907,7 +3925,7 @@ IL_0131: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) IL_0136: dup - IL_0137: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'words@34-8' + IL_0137: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::words@34 IL_013c: stloc.s words .line 36,40 : 1,20 '' IL_013e: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() @@ -3951,7 +3969,7 @@ .line 57,57 : 1,21 '' IL_0192: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_strings() IL_0197: dup - IL_0198: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'digits@57-4' + IL_0198: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::digits@57 IL_019d: stloc.s digits .line 58,63 : 1,20 '' IL_019f: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() @@ -4098,7 +4116,7 @@ .line 79,79 : 1,34 '' IL_030a: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [Utils]Utils::getCustomerList() IL_030f: dup - IL_0310: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'customers@79-4' + IL_0310: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::customers@79 IL_0315: stloc.s customers .line 80,86 : 1,21 '' IL_0317: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() @@ -4110,13 +4128,13 @@ IL_0326: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_customers() IL_032b: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) IL_0330: ldloc.s V_31 - IL_0332: newobj instance void Linq101Select01/'orders@82-2'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) + IL_0332: newobj instance void Linq101Select01/orders@82::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) IL_0337: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) - IL_033c: newobj instance void Linq101Select01/'orders@84-4'::.ctor() + IL_033c: newobj instance void Linq101Select01/'orders@84-2'::.ctor() IL_0341: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_0346: newobj instance void Linq101Select01/'orders@85-5'::.ctor() + IL_0346: newobj instance void Linq101Select01/'orders@85-3'::.ctor() IL_034b: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Select,class [mscorlib]System.Collections.IEnumerable,class [mscorlib]System.Tuple`3>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) IL_0350: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Struct01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Struct01.il.bsl index 55664ad8b3a..08d87803ee5 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Struct01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Struct01.il.bsl @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.8.3928.0 // Copyright (c) Microsoft Corporation. All rights reserved. @@ -13,7 +13,7 @@ .assembly extern FSharp.Core { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 4:4:1:0 + .ver 4:7:0:0 } .assembly StaticInit_Struct01 { @@ -29,20 +29,20 @@ } .mresource public FSharpSignatureData.StaticInit_Struct01 { - // Offset: 0x00000000 Length: 0x000007B1 + // Offset: 0x00000000 Length: 0x0000079F } .mresource public FSharpOptimizationData.StaticInit_Struct01 { - // Offset: 0x000007B8 Length: 0x0000021F + // Offset: 0x000007A8 Length: 0x0000021F } .module StaticInit_Struct01.dll -// MVID: {59B19250-05F6-D6CB-A745-03835092B159} +// MVID: {5ECD86B3-05F6-D6CB-A745-0383B386CD5E} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x02BA0000 +// Image base: 0x06E50000 // =============== CLASS MEMBERS DECLARATION =================== @@ -67,23 +67,23 @@ instance int32 CompareTo(valuetype StaticInit_Struct01/C obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 28 (0x1c) - .maxstack 5 - .locals init ([0] valuetype StaticInit_Struct01/C& V_0) + // Code size 27 (0x1b) + .maxstack 4 + .locals init ([0] valuetype StaticInit_Struct01/C& V_0, + [1] class [mscorlib]System.Collections.IComparer V_1) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 4,4 : 6,7 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\Source\\CodeGen\\EmittedIL\\StaticInit\\StaticInit_Struct01.fs' + .line 4,4 : 6,7 'C:\\kevinransom\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\StaticInit\\StaticInit_Struct01.fs' IL_0000: ldarga.s obj IL_0002: stloc.0 IL_0003: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0008: ldarg.0 - IL_0009: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s - IL_000e: ldloc.0 - IL_000f: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s - IL_0014: tail. - IL_0016: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, - !!0, - !!0) - IL_001b: ret + IL_0008: stloc.1 + IL_0009: ldarg.0 + IL_000a: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s + IL_000f: ldloc.0 + IL_0010: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s + IL_0015: call int32 [mscorlib]System.DateTime::Compare(valuetype [mscorlib]System.DateTime, + valuetype [mscorlib]System.DateTime) + IL_001a: ret } // end of method C::CompareTo .method public hidebysig virtual final @@ -105,10 +105,11 @@ class [mscorlib]System.Collections.IComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 31 (0x1f) - .maxstack 5 + // Code size 30 (0x1e) + .maxstack 4 .locals init ([0] valuetype StaticInit_Struct01/C V_0, - [1] valuetype StaticInit_Struct01/C& V_1) + [1] valuetype StaticInit_Struct01/C& V_1, + [2] class [mscorlib]System.Collections.IComparer V_2) .line 4,4 : 6,7 '' IL_0000: ldarg.1 IL_0001: unbox.any StaticInit_Struct01/C @@ -116,15 +117,14 @@ IL_0007: ldloca.s V_0 IL_0009: stloc.1 IL_000a: ldarg.2 - IL_000b: ldarg.0 - IL_000c: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s - IL_0011: ldloc.1 - IL_0012: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s - IL_0017: tail. - IL_0019: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, - !!0, - !!0) - IL_001e: ret + IL_000b: stloc.2 + IL_000c: ldarg.0 + IL_000d: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s + IL_0012: ldloc.1 + IL_0013: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s + IL_0018: call int32 [mscorlib]System.DateTime::Compare(valuetype [mscorlib]System.DateTime, + valuetype [mscorlib]System.DateTime) + IL_001d: ret } // end of method C::CompareTo .method public hidebysig virtual final @@ -175,16 +175,17 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 43 (0x2b) - .maxstack 5 + // Code size 42 (0x2a) + .maxstack 4 .locals init ([0] valuetype StaticInit_Struct01/C V_0, - [1] valuetype StaticInit_Struct01/C& V_1) + [1] valuetype StaticInit_Struct01/C& V_1, + [2] class [mscorlib]System.Collections.IEqualityComparer V_2) .line 100001,100001 : 0,0 '' IL_0000: ldarg.1 IL_0001: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) IL_0006: brtrue.s IL_000a - IL_0008: br.s IL_0029 + IL_0008: br.s IL_0028 .line 100001,100001 : 0,0 '' IL_000a: ldarg.1 @@ -193,19 +194,18 @@ IL_0011: ldloca.s V_0 IL_0013: stloc.1 IL_0014: ldarg.2 - IL_0015: ldarg.0 - IL_0016: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s - IL_001b: ldloc.1 - IL_001c: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s - IL_0021: tail. - IL_0023: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, - !!0, - !!0) - IL_0028: ret + IL_0015: stloc.2 + IL_0016: ldarg.0 + IL_0017: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s + IL_001c: ldloc.1 + IL_001d: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s + IL_0022: call bool [mscorlib]System.DateTime::Equals(valuetype [mscorlib]System.DateTime, + valuetype [mscorlib]System.DateTime) + IL_0027: ret .line 100001,100001 : 0,0 '' - IL_0029: ldc.i4.0 - IL_002a: ret + IL_0028: ldc.i4.0 + IL_0029: ret } // end of method C::Equals .method public specialname rtspecialname @@ -256,7 +256,7 @@ instance bool Equals(valuetype StaticInit_Struct01/C obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 23 (0x17) + // Code size 21 (0x15) .maxstack 4 .locals init ([0] valuetype StaticInit_Struct01/C& V_0) .line 4,4 : 6,7 '' @@ -266,10 +266,9 @@ IL_0004: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s IL_0009: ldloc.0 IL_000a: ldfld valuetype [mscorlib]System.DateTime StaticInit_Struct01/C::s - IL_000f: tail. - IL_0011: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, - !!0) - IL_0016: ret + IL_000f: call bool [mscorlib]System.DateTime::Equals(valuetype [mscorlib]System.DateTime, + valuetype [mscorlib]System.DateTime) + IL_0014: ret } // end of method C::Equals .method public hidebysig virtual final diff --git a/vsintegration/tests/UnitTests/Tests.Build.fs b/vsintegration/tests/UnitTests/Tests.Build.fs index 7d4bd4f5160..5a164806352 100644 --- a/vsintegration/tests/UnitTests/Tests.Build.fs +++ b/vsintegration/tests/UnitTests/Tests.Build.fs @@ -93,7 +93,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -109,7 +109,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -125,7 +125,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -143,7 +143,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -159,7 +159,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -174,7 +174,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -190,7 +190,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -206,7 +206,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -222,7 +222,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -238,7 +238,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -254,7 +254,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -270,7 +270,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -285,7 +285,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -301,7 +301,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -318,7 +318,7 @@ type Build() = "--highentropyva-" + Environment.NewLine + "--nocopyfsharpcore" + Environment.NewLine + "--yadda" + Environment.NewLine + - "yadda" + Environment.NewLine) + "yadda") cmd [] @@ -334,7 +334,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -350,7 +350,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -366,7 +366,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -382,7 +382,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -399,7 +399,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -416,7 +416,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -433,7 +433,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -449,7 +449,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -468,7 +468,7 @@ type Build() = "--highentropyva-" + Environment.NewLine + "--nocopyfsharpcore" + Environment.NewLine + src + Environment.NewLine + - src + Environment.NewLine) + src) cmd () @@ -485,7 +485,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -501,7 +501,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -517,7 +517,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -532,7 +532,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -547,7 +547,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -562,7 +562,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -576,7 +576,7 @@ type Build() = "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva+" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -591,7 +591,7 @@ type Build() = "--flaterrors" + Environment.NewLine + "--subsystemversion:6.02" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + - "--nocopyfsharpcore" + Environment.NewLine) + "--nocopyfsharpcore") cmd [] @@ -665,7 +665,7 @@ type Build() = "--other:internal quote" + Environment.NewLine + "blah" + Environment.NewLine + "foo.fs" + Environment.NewLine + - @"C:\Program Files\spaces.fs" + Environment.NewLine + @"C:\Program Files\spaces.fs" AssertEqual expected cmd @@ -710,4 +710,4 @@ type Build() = "blah" |] AssertEqual expectedFlags hostObject.Flags let expectedSources = [| "foo.fs"; "C:\\Program Files\\spaces.fs" |] - AssertEqual expectedSources hostObject.Sources \ No newline at end of file + AssertEqual expectedSources hostObject.Sources