diff --git a/build.cmd b/build.cmd index c3f2b018f01..27e29eb276b 100644 --- a/build.cmd +++ b/build.cmd @@ -153,6 +153,10 @@ if /i '%ARG%' == 'ci_part2' ( if /i '%ARG%' == 'ci_part3' ( + set BUILD_PORTABLE47=1 + set BUILD_PORTABLE7=1 + set BUILD_PORTABLE78=1 + set BUILD_PORTABLE259=1 set TEST_FSHARPQA_SUITE=1 set TEST_TAGS= set TEST_TAGS2=CI diff --git a/tests/fsharp/core/printing/z.output.test.1000.bsl b/tests/fsharp/core/printing/z.output.test.1000.bsl index 9d21952ff26..ed2ee65552a 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.bsl @@ -1783,73 +1783,73 @@ type Regression4319_T2 = static member ( +-+-+ ) : x:'a * y:'b -> string end -> + type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ stdin(572,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T0 = class static member ( +-+-+ ) : string end -> + type Regression4319_T1 = static member (+-+-+) x = "1 argument";; -----------------------------------------^^^^^ stdin(573,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1 = class static member ( +-+-+ ) : x:'a -> string end -> + type Regression4319_T1b = static member (+-+-+) (x) = "1 (argument) [brackets make no diff]";; -----------------------------------------^^^^^ stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1b = class static member ( +-+-+ ) : x:'a -> string end -> + type Regression4319_T1c = static member (+-+-+) x = let a,b = x in "1 argument, tuple typed from RHS. Still not OK";; -----------------------------------------^^^^^ stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1c = class static member ( +-+-+ ) : x:('a * 'b) -> string end -> + type Regression4319_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ stdin(576,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1d = class static member ( +-+-+ ) : x:(int * int) -> string end -> + type Regression4319_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T3 = class static member ( +-+-+ ) : x:'a * y:'b * z:'c -> string end -> + type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ @@ -1859,13 +1859,13 @@ stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argum -----------------------------------------^^^^^ stdin(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U1 = class static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string end -> + type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ @@ -1875,24 +1875,24 @@ stdin(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argum -----------------------------------------^^^^^ stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U1b = class static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string end -> + type Regression4319_U2 = static member (+-+-+) (x,y) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U2 = class static member ( +-+-+ ) : x:'a * y:'b -> moreArgs:'c -> string end -> + type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ @@ -1902,13 +1902,13 @@ stdin(582,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argum -----------------------------------------^^^^^ stdin(582,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U3 = class static member ( +-+-+ ) : x:'a * y:'b * z:'c -> moreArgs:'d -> string end -> + static member (:=) = "COLON_EQUALS" -------------------^^ @@ -2063,7 +2063,7 @@ stdin(618,21): warning FS1172: Infix operator member '...%' has no arguments. Ex --------------------^^ stdin(619,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_check = class static member ( & ) : string @@ -2092,12 +2092,12 @@ type Regression4319_check = static member ( - ) : string end -> + member this.ToString() = "ABC" ----------------^^^^^^^^ stdin(624,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. -Expect ABC = ABC +> Expect ABC = ABC type Regression4469 = class @@ -2750,33 +2750,33 @@ val fff : x:'a -> 'a val note_ExpectDupMethod : string = "Regression4927: Expect error due to duplicate methods in the "+[20 chars] -> + member this.M() = "string" ----------------^ stdin(765,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in this type. -> +> > val note_ExpectDupProperty : string = "Regression4927: Expect error due to duplicate properties in t"+[23 chars] -> + member this.P = "string" ----------------^ stdin(772,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in this type. -> > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" -> +> > > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" + type public IBPublic = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^ stdin(779,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in -> val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" -> +> > val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" + type internal IBInternal = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^^^ stdin(784,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in -> +> > module Regression5265_PriPri = begin type private IAPrivate = interface @@ -2790,12 +2790,12 @@ module Regression5265_PriPri = begin end > val it : string = "NOTE: Expect IAInternal less accessible IBPublic" -> + type public IBPublic = interface inherit IAInternal abstract Q : int end ------------------^^^^^^^^ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in -> +> > module Regression5265_IntInt = begin type internal IAInternal = interface @@ -2862,12 +2862,12 @@ end > val it : string = "Regression4232: Expect an error about duplicate virtual methods from parent type" -> + override x.M(a:string) = 1 -------------------^ stdin(825,20): error FS0361: The override 'M : string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M : 'U -> int' and 'abstract member Regression4232.D.M : 'T -> int' -> val it : string = +> > val it : string = "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" > type AnAxHostSubClass = @@ -2878,37 +2878,37 @@ type AnAxHostSubClass = > val it : string = "** Expect error because the active pattern result contains free type variables" -> + let (|A|B|) (x:int) = A x;; -----^^^^^ stdin(833,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' -> val it : string = +> > val it : string = "** Expect error because the active pattern result contains free type variables (match value generic)" -> + let (|A|B|) (x:'a) = A x;; -----^^^^^ stdin(836,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' -> val it : string = +> > val it : string = "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" -> + let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ stdin(839,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' -> val it : string = +> > val it : string = "** Expect OK, since error message says constraint should work!" > val ( |A|B| ) : x:int -> Choice > val it : string = "** Expect error since active pattern is not a function!" -> + let (|A|B|) = failwith "" : Choice;; -----^^^^^ stdin(845,6): error FS1209: Active pattern '|A|B|' is not a function -> val it : string = +> > val it : string = "** Expect OK since active pattern result is not too generic, typars depend on match val" > val ( |A|B| ) : p:bool -> 'a * 'b -> Choice<'a,'b> diff --git a/tests/fsharp/core/printing/z.output.test.200.bsl b/tests/fsharp/core/printing/z.output.test.200.bsl index 75fa08014de..659b1541a30 100644 --- a/tests/fsharp/core/printing/z.output.test.200.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.bsl @@ -1032,73 +1032,73 @@ type Regression4319_T2 = static member ( +-+-+ ) : x:'a * y:'b -> string end -> + type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ stdin(572,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T0 = class static member ( +-+-+ ) : string end -> + type Regression4319_T1 = static member (+-+-+) x = "1 argument";; -----------------------------------------^^^^^ stdin(573,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1 = class static member ( +-+-+ ) : x:'a -> string end -> + type Regression4319_T1b = static member (+-+-+) (x) = "1 (argument) [brackets make no diff]";; -----------------------------------------^^^^^ stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1b = class static member ( +-+-+ ) : x:'a -> string end -> + type Regression4319_T1c = static member (+-+-+) x = let a,b = x in "1 argument, tuple typed from RHS. Still not OK";; -----------------------------------------^^^^^ stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1c = class static member ( +-+-+ ) : x:('a * 'b) -> string end -> + type Regression4319_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ stdin(576,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1d = class static member ( +-+-+ ) : x:(int * int) -> string end -> + type Regression4319_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T3 = class static member ( +-+-+ ) : x:'a * y:'b * z:'c -> string end -> + type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ @@ -1108,13 +1108,8 @@ stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argum -----------------------------------------^^^^^ stdin(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - -type Regression4319_U1 = - class - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string - end - > + type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ @@ -1124,24 +1119,29 @@ stdin(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argum -----------------------------------------^^^^^ stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +type Regression4319_U1 = + class + static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + end +> type Regression4319_U1b = class static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string end -> + type Regression4319_U2 = static member (+-+-+) (x,y) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U2 = class static member ( +-+-+ ) : x:'a * y:'b -> moreArgs:'c -> string end -> + type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ @@ -1151,13 +1151,13 @@ stdin(582,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argum -----------------------------------------^^^^^ stdin(582,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U3 = class static member ( +-+-+ ) : x:'a * y:'b * z:'c -> moreArgs:'d -> string end -> + static member (:=) = "COLON_EQUALS" -------------------^^ @@ -1312,7 +1312,7 @@ stdin(618,21): warning FS1172: Infix operator member '...%' has no arguments. Ex --------------------^^ stdin(619,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_check = class static member ( & ) : string @@ -1341,12 +1341,12 @@ type Regression4319_check = static member ( - ) : string end -> + member this.ToString() = "ABC" ----------------^^^^^^^^ stdin(624,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. -Expect ABC = ABC +> Expect ABC = ABC type Regression4469 = class @@ -1999,33 +1999,33 @@ val fff : x:'a -> 'a val note_ExpectDupMethod : string = "Regression4927: Expect error due to duplicate methods in the "+[20 chars] -> + member this.M() = "string" ----------------^ stdin(765,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in this type. -> +> > val note_ExpectDupProperty : string = "Regression4927: Expect error due to duplicate properties in t"+[23 chars] -> + member this.P = "string" ----------------^ stdin(772,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in this type. -> > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" -> +> > > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" + type public IBPublic = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^ stdin(779,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in -> val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" -> +> > val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" + type internal IBInternal = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^^^ stdin(784,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in -> +> > module Regression5265_PriPri = begin type private IAPrivate = interface @@ -2039,12 +2039,12 @@ module Regression5265_PriPri = begin end > val it : string = "NOTE: Expect IAInternal less accessible IBPublic" -> + type public IBPublic = interface inherit IAInternal abstract Q : int end ------------------^^^^^^^^ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in -> +> > module Regression5265_IntInt = begin type internal IAInternal = interface @@ -2111,12 +2111,12 @@ end > val it : string = "Regression4232: Expect an error about duplicate virtual methods from parent type" -> + override x.M(a:string) = 1 -------------------^ stdin(825,20): error FS0361: The override 'M : string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M : 'U -> int' and 'abstract member Regression4232.D.M : 'T -> int' -> val it : string = +> > val it : string = "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" > type AnAxHostSubClass = @@ -2127,37 +2127,37 @@ type AnAxHostSubClass = > val it : string = "** Expect error because the active pattern result contains free type variables" -> + let (|A|B|) (x:int) = A x;; -----^^^^^ stdin(833,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' -> val it : string = - "** Expect error because the active pattern result contains free type variables (match value generic)" -> + let (|A|B|) (x:'a) = A x;; -----^^^^^ stdin(836,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' -> val it : string = - "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" -> + let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ stdin(839,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' -> val it : string = +> > val it : string = + "** Expect error because the active pattern result contains free type variables (match value generic)" +> > val it : string = + "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" +> > val it : string = "** Expect OK, since error message says constraint should work!" > val ( |A|B| ) : x:int -> Choice > val it : string = "** Expect error since active pattern is not a function!" -> + let (|A|B|) = failwith "" : Choice;; -----^^^^^ stdin(845,6): error FS1209: Active pattern '|A|B|' is not a function -> val it : string = +> > val it : string = "** Expect OK since active pattern result is not too generic, typars depend on match val" > val ( |A|B| ) : p:bool -> 'a * 'b -> Choice<'a,'b> diff --git a/tests/fsharp/core/printing/z.output.test.default.bsl b/tests/fsharp/core/printing/z.output.test.default.bsl index c9d3abc3a63..feaf4e8fbae 100644 --- a/tests/fsharp/core/printing/z.output.test.default.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.bsl @@ -5310,73 +5310,73 @@ type Regression4319_T2 = static member ( +-+-+ ) : x:'a * y:'b -> string end -> + type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ stdin(572,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T0 = class static member ( +-+-+ ) : string end -> + type Regression4319_T1 = static member (+-+-+) x = "1 argument";; -----------------------------------------^^^^^ stdin(573,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1 = class static member ( +-+-+ ) : x:'a -> string end -> + type Regression4319_T1b = static member (+-+-+) (x) = "1 (argument) [brackets make no diff]";; -----------------------------------------^^^^^ stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1b = class static member ( +-+-+ ) : x:'a -> string end -> + type Regression4319_T1c = static member (+-+-+) x = let a,b = x in "1 argument, tuple typed from RHS. Still not OK";; -----------------------------------------^^^^^ stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1c = class static member ( +-+-+ ) : x:('a * 'b) -> string end -> + type Regression4319_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ stdin(576,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1d = class static member ( +-+-+ ) : x:(int * int) -> string end -> + type Regression4319_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T3 = class static member ( +-+-+ ) : x:'a * y:'b * z:'c -> string end -> + type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ @@ -5386,13 +5386,13 @@ stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argum -----------------------------------------^^^^^ stdin(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U1 = class static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string end -> + type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ @@ -5402,24 +5402,24 @@ stdin(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argum -----------------------------------------^^^^^ stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U1b = class static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string end -> + type Regression4319_U2 = static member (+-+-+) (x,y) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U2 = class static member ( +-+-+ ) : x:'a * y:'b -> moreArgs:'c -> string end -> + type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ @@ -5429,13 +5429,13 @@ stdin(582,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argum -----------------------------------------^^^^^ stdin(582,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U3 = class static member ( +-+-+ ) : x:'a * y:'b * z:'c -> moreArgs:'d -> string end -> + static member (:=) = "COLON_EQUALS" -------------------^^ @@ -5590,7 +5590,7 @@ stdin(618,21): warning FS1172: Infix operator member '...%' has no arguments. Ex --------------------^^ stdin(619,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_check = class static member ( & ) : string @@ -5619,12 +5619,12 @@ type Regression4319_check = static member ( - ) : string end -> + member this.ToString() = "ABC" ----------------^^^^^^^^ stdin(624,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. -Expect ABC = ABC +> Expect ABC = ABC type Regression4469 = class @@ -6277,33 +6277,33 @@ val fff : x:'a -> 'a val note_ExpectDupMethod : string = "Regression4927: Expect error due to duplicate methods in the "+[20 chars] -> + member this.M() = "string" ----------------^ stdin(765,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in this type. -> +> > val note_ExpectDupProperty : string = "Regression4927: Expect error due to duplicate properties in t"+[23 chars] -> + member this.P = "string" ----------------^ stdin(772,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in this type. -> > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" -> +> > > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" + type public IBPublic = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^ stdin(779,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in -> val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" -> +> > val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" + type internal IBInternal = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^^^ stdin(784,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in -> +> > module Regression5265_PriPri = begin type private IAPrivate = interface @@ -6317,12 +6317,12 @@ module Regression5265_PriPri = begin end > val it : string = "NOTE: Expect IAInternal less accessible IBPublic" -> + type public IBPublic = interface inherit IAInternal abstract Q : int end ------------------^^^^^^^^ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in -> +> > module Regression5265_IntInt = begin type internal IAInternal = interface @@ -6389,12 +6389,12 @@ end > val it : string = "Regression4232: Expect an error about duplicate virtual methods from parent type" -> + override x.M(a:string) = 1 -------------------^ stdin(825,20): error FS0361: The override 'M : string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M : 'U -> int' and 'abstract member Regression4232.D.M : 'T -> int' -> val it : string = +> > val it : string = "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" > type AnAxHostSubClass = @@ -6405,37 +6405,37 @@ type AnAxHostSubClass = > val it : string = "** Expect error because the active pattern result contains free type variables" -> + let (|A|B|) (x:int) = A x;; -----^^^^^ stdin(833,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' -> val it : string = +> > val it : string = "** Expect error because the active pattern result contains free type variables (match value generic)" -> + let (|A|B|) (x:'a) = A x;; -----^^^^^ stdin(836,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' -> val it : string = +> > val it : string = "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" -> + let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ stdin(839,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' -> val it : string = +> > val it : string = "** Expect OK, since error message says constraint should work!" > val ( |A|B| ) : x:int -> Choice > val it : string = "** Expect error since active pattern is not a function!" -> + let (|A|B|) = failwith "" : Choice;; -----^^^^^ stdin(845,6): error FS1209: Active pattern '|A|B|' is not a function -> val it : string = +> > val it : string = "** Expect OK since active pattern result is not too generic, typars depend on match val" > val ( |A|B| ) : p:bool -> 'a * 'b -> Choice<'a,'b> diff --git a/tests/fsharp/core/printing/z.output.test.off.bsl b/tests/fsharp/core/printing/z.output.test.off.bsl index 2a0b5ae28b3..15104edb303 100644 --- a/tests/fsharp/core/printing/z.output.test.off.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.bsl @@ -808,73 +808,73 @@ type Regression4319_T2 = static member ( +-+-+ ) : x:'a * y:'b -> string end -> + type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ stdin(572,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T0 = class static member ( +-+-+ ) : string end -> + type Regression4319_T1 = static member (+-+-+) x = "1 argument";; -----------------------------------------^^^^^ stdin(573,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1 = class static member ( +-+-+ ) : x:'a -> string end -> + type Regression4319_T1b = static member (+-+-+) (x) = "1 (argument) [brackets make no diff]";; -----------------------------------------^^^^^ stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1b = class static member ( +-+-+ ) : x:'a -> string end -> + type Regression4319_T1c = static member (+-+-+) x = let a,b = x in "1 argument, tuple typed from RHS. Still not OK";; -----------------------------------------^^^^^ stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1c = class static member ( +-+-+ ) : x:('a * 'b) -> string end -> + type Regression4319_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ stdin(576,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T1d = class static member ( +-+-+ ) : x:(int * int) -> string end -> + type Regression4319_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_T3 = class static member ( +-+-+ ) : x:'a * y:'b * z:'c -> string end -> + type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ @@ -884,13 +884,13 @@ stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argum -----------------------------------------^^^^^ stdin(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U1 = class static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string end -> + type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ @@ -900,24 +900,24 @@ stdin(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argum -----------------------------------------^^^^^ stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U1b = class static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string end -> + type Regression4319_U2 = static member (+-+-+) (x,y) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U2 = class static member ( +-+-+ ) : x:'a * y:'b -> moreArgs:'c -> string end -> + type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ @@ -927,13 +927,13 @@ stdin(582,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argum -----------------------------------------^^^^^ stdin(582,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_U3 = class static member ( +-+-+ ) : x:'a * y:'b * z:'c -> moreArgs:'d -> string end -> + static member (:=) = "COLON_EQUALS" -------------------^^ @@ -1088,7 +1088,7 @@ stdin(618,21): warning FS1172: Infix operator member '...%' has no arguments. Ex --------------------^^ stdin(619,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - +> type Regression4319_check = class static member ( & ) : string @@ -1117,12 +1117,12 @@ type Regression4319_check = static member ( - ) : string end -> + member this.ToString() = "ABC" ----------------^^^^^^^^ stdin(624,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. -Expect ABC = ABC +> Expect ABC = ABC type Regression4469 = class @@ -1774,32 +1774,32 @@ val fff : x:'a -> 'a > val note_ExpectDupMethod : string -> + member this.M() = "string" ----------------^ stdin(765,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in this type. -> +> > val note_ExpectDupProperty : string -> + member this.P = "string" ----------------^ stdin(772,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in this type. -> > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" -> +> > > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" + type public IBPublic = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^ stdin(779,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in -> val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" -> +> > val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" + type internal IBInternal = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^^^ stdin(784,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in -> +> > module Regression5265_PriPri = begin type private IAPrivate = interface @@ -1813,12 +1813,12 @@ module Regression5265_PriPri = begin end > val it : string = "NOTE: Expect IAInternal less accessible IBPublic" -> + type public IBPublic = interface inherit IAInternal abstract Q : int end ------------------^^^^^^^^ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in -> +> > module Regression5265_IntInt = begin type internal IAInternal = interface @@ -1885,12 +1885,12 @@ end > val it : string = "Regression4232: Expect an error about duplicate virtual methods from parent type" -> + override x.M(a:string) = 1 -------------------^ stdin(825,20): error FS0361: The override 'M : string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M : 'U -> int' and 'abstract member Regression4232.D.M : 'T -> int' -> val it : string = +> > val it : string = "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" > type AnAxHostSubClass = @@ -1901,37 +1901,37 @@ type AnAxHostSubClass = > val it : string = "** Expect error because the active pattern result contains free type variables" -> + let (|A|B|) (x:int) = A x;; -----^^^^^ stdin(833,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' -> val it : string = +> > val it : string = "** Expect error because the active pattern result contains free type variables (match value generic)" -> + let (|A|B|) (x:'a) = A x;; -----^^^^^ stdin(836,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' -> val it : string = +> > val it : string = "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" -> + let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ stdin(839,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' -> val it : string = +> > val it : string = "** Expect OK, since error message says constraint should work!" > val ( |A|B| ) : x:int -> Choice > val it : string = "** Expect error since active pattern is not a function!" -> + let (|A|B|) = failwith "" : Choice;; -----^^^^^ stdin(845,6): error FS1209: Active pattern '|A|B|' is not a function -> val it : string = +> > val it : string = "** Expect OK since active pattern result is not too generic, typars depend on match val" > val ( |A|B| ) : p:bool -> 'a * 'b -> Choice<'a,'b> diff --git a/tests/fsharp/typecheck/sigs/neg91.bsl b/tests/fsharp/typecheck/sigs/neg91.bsl index 704a7e282b2..7021297a7f1 100644 --- a/tests/fsharp/typecheck/sigs/neg91.bsl +++ b/tests/fsharp/typecheck/sigs/neg91.bsl @@ -17,4 +17,4 @@ neg91.fs(72,11,72,27): typecheck error FS3191: This literal pattern does not tak neg91.fs(80,11,80,38): typecheck error FS3191: This literal pattern does not take arguments -neg91.fs(64,29,64,32): typecheck error FS3192: Constructors are not permitted as extension members - they must be defined as part of the original definition of the type +neg91.fs(90,29,90,32): typecheck error FS3192: Constructors are not permitted as extension members - they must be defined as part of the original definition of the type diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare07.il.netfx4.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare07.il.netfx4.bsl index d3f94c4eee7..9264f0d50ee 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare07.il.netfx4.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare07.il.netfx4.bsl @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17376 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.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:3:0:0 + .ver 4:4:1:9055 } .assembly Compare07 { @@ -29,20 +29,22 @@ } .mresource public FSharpSignatureData.Compare07 { - // Offset: 0x00000000 Length: 0x000008B6 + // Offset: 0x00000000 Length: 0x0000089A + // WARNING: managed resource file FSharpSignatureData.Compare07 created } .mresource public FSharpOptimizationData.Compare07 { - // Offset: 0x000008C0 Length: 0x000006A4 + // Offset: 0x000008A0 Length: 0x00000694 + // WARNING: managed resource file FSharpOptimizationData.Compare07 created } .module Compare07.dll -// MVID: {4F20E44D-05DE-F88E-A745-03834DE4204F} +// MVID: {56B7C20F-05DE-F88E-A745-03830FC2B756} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x000000ADDE9C0000 +// Image base: 0x01310000 // =============== CLASS MEMBERS DECLARATION =================== @@ -254,17 +256,16 @@ instance int32 CompareTo(object obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 16 (0x10) + // Code size 14 (0xe) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 4,4 : 10,20 + .line 4,4 : 10,20 IL_0000: nop IL_0001: ldarg.0 IL_0002: ldarg.1 IL_0003: unbox.any class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 - IL_0008: tail. - IL_000a: callvirt instance int32 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::CompareTo(class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1) - IL_000f: ret + IL_0008: callvirt instance int32 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::CompareTo(class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1) + IL_000d: ret } // end of method GenericKey`1::CompareTo .method public hidebysig virtual final @@ -280,7 +281,7 @@ [3] int32 V_3, [4] !a V_4, [5] !a V_5) - .line 4,4 : 10,20 + .line 4,4 : 10,20 IL_0000: nop IL_0001: ldarg.1 IL_0002: unbox.any class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 @@ -432,7 +433,7 @@ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) // Code size 13 (0xd) .maxstack 8 - .line 4,4 : 10,20 + .line 4,4 : 10,20 IL_0000: nop IL_0001: ldarg.0 IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() @@ -583,7 +584,7 @@ instance bool Equals(object 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 (class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_0) IL_0000: nop @@ -591,16 +592,15 @@ IL_0002: isinst class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 IL_0007: stloc.0 IL_0008: ldloc.0 - IL_0009: brfalse.s IL_0015 + IL_0009: brfalse.s IL_0013 IL_000b: ldarg.0 IL_000c: ldloc.0 - IL_000d: tail. - IL_000f: callvirt instance bool class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1) - IL_0014: ret + IL_000d: callvirt instance bool class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1) + IL_0012: ret - IL_0015: ldc.i4.0 - IL_0016: ret + IL_0013: ldc.i4.0 + IL_0014: ret } // end of method GenericKey`1::Equals .property instance int32 Tag() @@ -638,28 +638,28 @@ [1] class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 t1, [2] class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 t2, [3] int32 i) - .line 6,6 : 8,25 + .line 6,6 : 8,25 IL_0000: nop IL_0001: ldc.i4.1 IL_0002: stloc.0 - .line 7,7 : 8,32 + .line 7,7 : 8,32 IL_0003: ldc.i4.1 IL_0004: ldc.i4.2 IL_0005: call class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::NewGenericKey(!0, !0) IL_000a: stloc.1 - .line 8,8 : 8,32 + .line 8,8 : 8,32 IL_000b: ldc.i4.1 IL_000c: ldc.i4.3 IL_000d: call class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::NewGenericKey(!0, !0) IL_0012: stloc.2 - .line 9,9 : 8,32 + .line 9,9 : 8,32 IL_0013: ldc.i4.0 IL_0014: stloc.3 IL_0015: br.s IL_0023 - .line 10,10 : 12,30 + .line 10,10 : 12,30 IL_0017: ldloc.1 IL_0018: ldloc.2 IL_0019: callvirt instance int32 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::CompareTo(class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1) @@ -668,12 +668,12 @@ IL_0020: ldc.i4.1 IL_0021: add IL_0022: stloc.3 - .line 9,9 : 21,29 + .line 9,9 : 21,29 IL_0023: ldloc.3 IL_0024: ldc.i4 0x989681 IL_0029: blt.s IL_0017 - .line 11,11 : 8,9 + .line 11,11 : 8,9 IL_002b: ldloc.0 IL_002c: ret } // end of method CompareMicroPerfAndCodeGenerationTests::f6 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare10.il.netfx4.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare10.il.netfx4.bsl index 50bdd64b311..a425e0cd968 100644 Binary files a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare10.il.netfx4.bsl and b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare10.il.netfx4.bsl differ diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals06.il.netfx4.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals06.il.netfx4.bsl index d9504cae2c9..4dc8fc9bf24 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals06.il.netfx4.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals06.il.netfx4.bsl @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17376 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.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:3:0:0 + .ver 4:4:1:9055 } .assembly Equals06 { @@ -29,20 +29,22 @@ } .mresource public FSharpSignatureData.Equals06 { - // Offset: 0x00000000 Length: 0x000008B2 + // Offset: 0x00000000 Length: 0x00000896 + // WARNING: managed resource file FSharpSignatureData.Equals06 created } .mresource public FSharpOptimizationData.Equals06 { - // Offset: 0x000008B8 Length: 0x000006A0 + // Offset: 0x000008A0 Length: 0x00000690 + // WARNING: managed resource file FSharpOptimizationData.Equals06 created } .module Equals06.dll -// MVID: {4F20E45C-0759-31EC-A745-03835CE4204F} +// MVID: {56B7C2C7-0759-31EC-A745-0383C7C2B756} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x0000003652390000 +// Image base: 0x00B20000 // =============== CLASS MEMBERS DECLARATION =================== @@ -254,17 +256,16 @@ instance int32 CompareTo(object obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 16 (0x10) + // Code size 14 (0xe) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 4,4 : 10,20 + .line 4,4 : 10,20 IL_0000: nop IL_0001: ldarg.0 IL_0002: ldarg.1 IL_0003: unbox.any class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 - IL_0008: tail. - IL_000a: callvirt instance int32 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::CompareTo(class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1) - IL_000f: ret + IL_0008: callvirt instance int32 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::CompareTo(class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1) + IL_000d: ret } // end of method GenericKey`1::CompareTo .method public hidebysig virtual final @@ -280,7 +281,7 @@ [3] int32 V_3, [4] !a V_4, [5] !a V_5) - .line 4,4 : 10,20 + .line 4,4 : 10,20 IL_0000: nop IL_0001: ldarg.1 IL_0002: unbox.any class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 @@ -432,7 +433,7 @@ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) // Code size 13 (0xd) .maxstack 8 - .line 4,4 : 10,20 + .line 4,4 : 10,20 IL_0000: nop IL_0001: ldarg.0 IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() @@ -583,7 +584,7 @@ instance bool Equals(object 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 (class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_0) IL_0000: nop @@ -591,16 +592,15 @@ IL_0002: isinst class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 IL_0007: stloc.0 IL_0008: ldloc.0 - IL_0009: brfalse.s IL_0015 + IL_0009: brfalse.s IL_0013 IL_000b: ldarg.0 IL_000c: ldloc.0 - IL_000d: tail. - IL_000f: callvirt instance bool class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1) - IL_0014: ret + IL_000d: callvirt instance bool class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1) + IL_0012: ret - IL_0015: ldc.i4.0 - IL_0016: ret + IL_0013: ldc.i4.0 + IL_0014: ret } // end of method GenericKey`1::Equals .property instance int32 Tag() @@ -638,28 +638,28 @@ [1] class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 t1, [2] class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 t2, [3] int32 i) - .line 6,6 : 8,29 + .line 6,6 : 8,29 IL_0000: nop IL_0001: ldc.i4.0 IL_0002: stloc.0 - .line 7,7 : 8,32 + .line 7,7 : 8,32 IL_0003: ldc.i4.1 IL_0004: ldc.i4.2 IL_0005: call class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::NewGenericKey(!0, !0) IL_000a: stloc.1 - .line 8,8 : 8,32 + .line 8,8 : 8,32 IL_000b: ldc.i4.1 IL_000c: ldc.i4.3 IL_000d: call class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::NewGenericKey(!0, !0) IL_0012: stloc.2 - .line 9,9 : 8,32 + .line 9,9 : 8,32 IL_0013: ldc.i4.0 IL_0014: stloc.3 IL_0015: br.s IL_0028 - .line 10,10 : 12,26 + .line 10,10 : 12,26 IL_0017: ldloc.1 IL_0018: ldloc.2 IL_0019: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() @@ -670,12 +670,12 @@ IL_0025: ldc.i4.1 IL_0026: add IL_0027: stloc.3 - .line 9,9 : 21,29 + .line 9,9 : 21,29 IL_0028: ldloc.3 IL_0029: ldc.i4 0x989681 IL_002e: blt.s IL_0017 - .line 11,11 : 8,9 + .line 11,11 : 8,9 IL_0030: ldloc.0 IL_0031: ret } // end of method EqualsMicroPerfAndCodeGenerationTests::f6 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals09.il.netfx4.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals09.il.netfx4.bsl index e48cd004d36..78b85edbba2 100644 Binary files a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals09.il.netfx4.bsl and b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals09.il.netfx4.bsl differ diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash09.il.netfx4.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash09.il.netfx4.bsl index 340d96ae54c..d87615b8220 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash09.il.netfx4.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash09.il.netfx4.bsl @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17376 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.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:3:0:0 + .ver 4:4:1:9055 } .assembly Hash09 { @@ -29,20 +29,22 @@ } .mresource public FSharpSignatureData.Hash09 { - // Offset: 0x00000000 Length: 0x000008AA + // Offset: 0x00000000 Length: 0x0000088E + // WARNING: managed resource file FSharpSignatureData.Hash09 created } .mresource public FSharpOptimizationData.Hash09 { - // Offset: 0x000008B0 Length: 0x00000698 + // Offset: 0x00000898 Length: 0x00000688 + // WARNING: managed resource file FSharpOptimizationData.Hash09 created } .module Hash09.dll -// MVID: {4F20E46D-9642-77DB-A745-03836DE4204F} +// MVID: {56B7C2E6-9642-77DB-A745-0383E6C2B756} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x0000009A2B400000 +// Image base: 0x01150000 // =============== CLASS MEMBERS DECLARATION =================== @@ -254,17 +256,16 @@ instance int32 CompareTo(object obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 16 (0x10) + // Code size 14 (0xe) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 4,4 : 10,20 + .line 4,4 : 10,20 IL_0000: nop IL_0001: ldarg.0 IL_0002: ldarg.1 IL_0003: unbox.any class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 - IL_0008: tail. - IL_000a: callvirt instance int32 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::CompareTo(class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1) - IL_000f: ret + IL_0008: callvirt instance int32 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::CompareTo(class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1) + IL_000d: ret } // end of method GenericKey`1::CompareTo .method public hidebysig virtual final @@ -280,7 +281,7 @@ [3] int32 V_3, [4] !a V_4, [5] !a V_5) - .line 4,4 : 10,20 + .line 4,4 : 10,20 IL_0000: nop IL_0001: ldarg.1 IL_0002: unbox.any class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 @@ -432,7 +433,7 @@ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) // Code size 13 (0xd) .maxstack 8 - .line 4,4 : 10,20 + .line 4,4 : 10,20 IL_0000: nop IL_0001: ldarg.0 IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() @@ -583,7 +584,7 @@ instance bool Equals(object 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 (class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_0) IL_0000: nop @@ -591,16 +592,15 @@ IL_0002: isinst class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 IL_0007: stloc.0 IL_0008: ldloc.0 - IL_0009: brfalse.s IL_0015 + IL_0009: brfalse.s IL_0013 IL_000b: ldarg.0 IL_000c: ldloc.0 - IL_000d: tail. - IL_000f: callvirt instance bool class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1) - IL_0014: ret + IL_000d: callvirt instance bool class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1) + IL_0012: ret - IL_0015: ldc.i4.0 - IL_0016: ret + IL_0013: ldc.i4.0 + IL_0014: ret } // end of method GenericKey`1::Equals .property instance int32 Tag() @@ -636,13 +636,13 @@ .maxstack 4 .locals init ([0] int32 i, [1] int32 V_1) - .line 7,7 : 8,32 + .line 7,7 : 8,32 IL_0000: nop IL_0001: ldc.i4.0 IL_0002: stloc.0 IL_0003: br.s IL_001b - .line 8,8 : 12,44 + .line 8,8 : 12,44 IL_0005: ldc.i4.1 IL_0006: ldc.i4.2 IL_0007: call class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::NewGenericKey(!0, @@ -654,7 +654,7 @@ IL_0018: ldc.i4.1 IL_0019: add IL_001a: stloc.0 - .line 7,7 : 21,29 + .line 7,7 : 21,29 IL_001b: ldloc.0 IL_001c: ldc.i4 0x989681 IL_0021: blt.s IL_0005 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash12.il.netfx4.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash12.il.netfx4.bsl index 487646776d3..a755e31b4b0 100644 Binary files a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash12.il.netfx4.bsl and b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash12.il.netfx4.bsl differ diff --git a/tests/fsharpqa/Source/TypeProviders/RuntimeDesignTimeAssembly/LoadingLogic/Cleanup.cmd b/tests/fsharpqa/Source/TypeProviders/RuntimeDesignTimeAssembly/LoadingLogic/Cleanup.cmd index 2f474c43435..20c828b4a6a 100644 --- a/tests/fsharpqa/Source/TypeProviders/RuntimeDesignTimeAssembly/LoadingLogic/Cleanup.cmd +++ b/tests/fsharpqa/Source/TypeProviders/RuntimeDesignTimeAssembly/LoadingLogic/Cleanup.cmd @@ -1,3 +1,4 @@ +IF NOT DEFINED GACUTILEXE32 IF EXIST "%WINSDKNETFXTOOLS%gacutil.exe" set GACUTILEXE32=%WINSDKNETFXTOOLS%gacutil.exe set GACUTIL=%ADMIN_PIPE% "%GACUTILEXE32%" goto :Label%1 diff --git a/tests/fsharpqa/Source/TypeProviders/RuntimeDesignTimeAssembly/LoadingLogic/DoStuff.cmd b/tests/fsharpqa/Source/TypeProviders/RuntimeDesignTimeAssembly/LoadingLogic/DoStuff.cmd index 5f7cecd1029..314d726658e 100644 --- a/tests/fsharpqa/Source/TypeProviders/RuntimeDesignTimeAssembly/LoadingLogic/DoStuff.cmd +++ b/tests/fsharpqa/Source/TypeProviders/RuntimeDesignTimeAssembly/LoadingLogic/DoStuff.cmd @@ -1,4 +1,5 @@ +IF NOT DEFINED GACUTILEXE32 IF EXIST "%WINSDKNETFXTOOLS%gacutil.exe" set GACUTILEXE32=%WINSDKNETFXTOOLS%gacutil.exe set GACUTIL=%ADMIN_PIPE% "%GACUTILEXE32%" goto :Label%2 %1