From 7761d8cdaf87ff618449126b3c61d1f6008c6fe8 Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Mon, 4 Sep 2023 13:22:52 +0200 Subject: [PATCH 1/2] Parser: recover on unfinished record patterns --- src/Compiler/SyntaxTree/SyntaxTree.fs | 2 +- src/Compiler/SyntaxTree/SyntaxTree.fsi | 2 +- src/Compiler/pars.fsy | 30 +++++++++++++------ ...ComplexArgumentsLambdaHasArrowRange.fs.bsl | 6 ++-- .../DestructedLambdaHasArrowRange.fs.bsl | 6 ++-- .../data/SyntaxTree/Pattern/Record 01.fs | 4 +++ .../data/SyntaxTree/Pattern/Record 01.fs.bsl | 20 +++++++++++++ .../data/SyntaxTree/Pattern/Record 02.fs | 4 +++ .../data/SyntaxTree/Pattern/Record 02.fs.bsl | 21 +++++++++++++ .../data/SyntaxTree/Pattern/Record 03.fs | 4 +++ .../data/SyntaxTree/Pattern/Record 03.fs.bsl | 22 ++++++++++++++ .../data/SyntaxTree/Pattern/Record 04.fs | 4 +++ .../data/SyntaxTree/Pattern/Record 04.fs.bsl | 21 +++++++++++++ .../data/SyntaxTree/Pattern/Record 05.fs | 4 +++ .../data/SyntaxTree/Pattern/Record 05.fs.bsl | 20 +++++++++++++ .../data/SyntaxTree/Pattern/Record 06.fs | 4 +++ .../data/SyntaxTree/Pattern/Record 06.fs.bsl | 20 +++++++++++++ ...atRecordContainsTheRangeOfTheEqualsSign.fs | 4 --- ...cordContainsTheRangeOfTheEqualsSign.fs.bsl | 26 ---------------- 19 files changed, 177 insertions(+), 47 deletions(-) create mode 100644 tests/service/data/SyntaxTree/Pattern/Record 01.fs create mode 100644 tests/service/data/SyntaxTree/Pattern/Record 01.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Pattern/Record 02.fs create mode 100644 tests/service/data/SyntaxTree/Pattern/Record 02.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Pattern/Record 03.fs create mode 100644 tests/service/data/SyntaxTree/Pattern/Record 03.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Pattern/Record 04.fs create mode 100644 tests/service/data/SyntaxTree/Pattern/Record 04.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Pattern/Record 05.fs create mode 100644 tests/service/data/SyntaxTree/Pattern/Record 05.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Pattern/Record 06.fs create mode 100644 tests/service/data/SyntaxTree/Pattern/Record 06.fs.bsl delete mode 100644 tests/service/data/SyntaxTree/Pattern/SynPatRecordContainsTheRangeOfTheEqualsSign.fs delete mode 100644 tests/service/data/SyntaxTree/Pattern/SynPatRecordContainsTheRangeOfTheEqualsSign.fs.bsl diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/Compiler/SyntaxTree/SyntaxTree.fs index 9ea664863dc..bfe0ef550d5 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fs +++ b/src/Compiler/SyntaxTree/SyntaxTree.fs @@ -948,7 +948,7 @@ type SynPat = | ArrayOrList of isArray: bool * elementPats: SynPat list * range: range - | Record of fieldPats: ((LongIdent * Ident) * range * SynPat) list * range: range + | Record of fieldPats: ((LongIdent * Ident) * range option * SynPat) list * range: range | Null of range: range diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/Compiler/SyntaxTree/SyntaxTree.fsi index 0f1f6e858d6..d2eed167c46 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fsi +++ b/src/Compiler/SyntaxTree/SyntaxTree.fsi @@ -1104,7 +1104,7 @@ type SynPat = | ArrayOrList of isArray: bool * elementPats: SynPat list * range: range /// A record pattern - | Record of fieldPats: ((LongIdent * Ident) * range * SynPat) list * range: range + | Record of fieldPats: ((LongIdent * Ident) * range option * SynPat) list * range: range /// The 'null' pattern | Null of range: range diff --git a/src/Compiler/pars.fsy b/src/Compiler/pars.fsy index 918f412078b..c020df5f9ca 100644 --- a/src/Compiler/pars.fsy +++ b/src/Compiler/pars.fsy @@ -3591,8 +3591,10 @@ atomicPattern: { SynPat.QuoteExpr($1, lhs parseState) } | LBRACE recordPatternElementsAux rbrace - { let rs, m = $2 - SynPat.Record(rs, rhs2 parseState 1 3) } + { SynPat.Record($2, rhs2 parseState 1 3) } + + | LBRACE error rbrace + { SynPat.Record([], rhs2 parseState 1 3) } | LBRACK listPatternElements RBRACK { SynPat.ArrayOrList(false, $2, lhs parseState) } @@ -3775,19 +3777,29 @@ conjParenPatternElements: | parenPattern AMP parenPattern { $3 :: $1 :: [] } -recordPatternElementsAux: /* Fix 1190 */ +recordPatternElementsAux: | recordPatternElement opt_seps - { [$1], lhs parseState } + { [$1] } | recordPatternElement seps recordPatternElementsAux - { let r = $1 - let (rs, dropMark) = $3 - (r :: rs), lhs parseState } + { $1 :: $3 } recordPatternElement: | path EQUALS parenPattern - { let mEquals = rhs parseState 2 - (List.frontAndBack $1.LongIdent, mEquals, $3) } + { let mPath = $1.Range + let mEquals = rhs parseState 2 + let mPat = $3.Range + List.frontAndBack $1.LongIdent, Some mEquals, $3 } + + | path EQUALS recover + { let mPath = $1.Range + let mEquals = rhs parseState 2 + let pat = SynPat.Wild(mEquals.EndRange) + List.frontAndBack $1.LongIdent, Some mEquals, pat } + + | path recover + { let pat = SynPat.Wild($1.Range.EndRange) + List.frontAndBack $1.LongIdent, None, pat } listPatternElements: | /* EMPTY */ diff --git a/tests/service/data/SyntaxTree/Lambda/ComplexArgumentsLambdaHasArrowRange.fs.bsl b/tests/service/data/SyntaxTree/Lambda/ComplexArgumentsLambdaHasArrowRange.fs.bsl index cc89a8f55e0..b7334e423de 100644 --- a/tests/service/data/SyntaxTree/Lambda/ComplexArgumentsLambdaHasArrowRange.fs.bsl +++ b/tests/service/data/SyntaxTree/Lambda/ComplexArgumentsLambdaHasArrowRange.fs.bsl @@ -25,7 +25,7 @@ ImplFile (NoneAtInvisible, Ident _arg2, [SynMatchClause (Record - ([(([], Y), (3,9--3,10), + ([(([], Y), Some (3,9--3,10), ListCons (Named (SynIdent (h, None), false, None, @@ -88,7 +88,7 @@ ImplFile (2,4--2,10)); Paren (Record - ([(([], Y), (3,9--3,10), + ([(([], Y), Some (3,9--3,10), ListCons (Named (SynIdent (h, None), false, None, (3,11--3,12)), @@ -108,7 +108,7 @@ ImplFile (NoneAtInvisible, Ident _arg2, [SynMatchClause (Record - ([(([], Y), (3,9--3,10), + ([(([], Y), Some (3,9--3,10), ListCons (Named (SynIdent (h, None), false, None, diff --git a/tests/service/data/SyntaxTree/Lambda/DestructedLambdaHasArrowRange.fs.bsl b/tests/service/data/SyntaxTree/Lambda/DestructedLambdaHasArrowRange.fs.bsl index 2fcfbde3a84..442d815a3dd 100644 --- a/tests/service/data/SyntaxTree/Lambda/DestructedLambdaHasArrowRange.fs.bsl +++ b/tests/service/data/SyntaxTree/Lambda/DestructedLambdaHasArrowRange.fs.bsl @@ -14,7 +14,7 @@ ImplFile (NoneAtInvisible, Ident _arg1, [SynMatchClause (Record - ([(([], X), (2,8--2,9), + ([(([], X), Some (2,8--2,9), Named (SynIdent (x, None), false, None, (2,10--2,11)))], (2,4--2,13)), None, @@ -35,14 +35,14 @@ ImplFile WithKeyword = (2,4--2,22) }), Some ([Record - ([(([], X), (2,8--2,9), + ([(([], X), Some (2,8--2,9), Named (SynIdent (x, None), false, None, (2,10--2,11)))], (2,4--2,13))], Match (NoneAtInvisible, Ident _arg1, [SynMatchClause (Record - ([(([], X), (2,8--2,9), + ([(([], X), Some (2,8--2,9), Named (SynIdent (x, None), false, None, (2,10--2,11)))], (2,4--2,13)), None, diff --git a/tests/service/data/SyntaxTree/Pattern/Record 01.fs b/tests/service/data/SyntaxTree/Pattern/Record 01.fs new file mode 100644 index 00000000000..41b0c25d4c5 --- /dev/null +++ b/tests/service/data/SyntaxTree/Pattern/Record 01.fs @@ -0,0 +1,4 @@ +module Module + +match () with +| { A = _ } -> () diff --git a/tests/service/data/SyntaxTree/Pattern/Record 01.fs.bsl b/tests/service/data/SyntaxTree/Pattern/Record 01.fs.bsl new file mode 100644 index 00000000000..9feca15fc45 --- /dev/null +++ b/tests/service/data/SyntaxTree/Pattern/Record 01.fs.bsl @@ -0,0 +1,20 @@ +ImplFile + (ParsedImplFileInput + ("/root/Pattern/Record 01.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Match + (Yes (3,0--3,13), Const (Unit, (3,6--3,8)), + [SynMatchClause + (Record + ([(([], A), Some (4,6--4,7), Wild (4,8--4,9))], + (4,2--4,11)), None, Const (Unit, (4,15--4,17)), + (4,2--4,17), Yes, { ArrowRange = Some (4,12--4,14) + BarRange = Some (4,0--4,1) })], + (3,0--4,17), { MatchKeyword = (3,0--3,5) + WithKeyword = (3,9--3,13) }), (3,0--4,17))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,17), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Pattern/Record 02.fs b/tests/service/data/SyntaxTree/Pattern/Record 02.fs new file mode 100644 index 00000000000..c2fb8cb8b63 --- /dev/null +++ b/tests/service/data/SyntaxTree/Pattern/Record 02.fs @@ -0,0 +1,4 @@ +module Module + +match () with +| { A = _; B = _ } -> () diff --git a/tests/service/data/SyntaxTree/Pattern/Record 02.fs.bsl b/tests/service/data/SyntaxTree/Pattern/Record 02.fs.bsl new file mode 100644 index 00000000000..57d597dab55 --- /dev/null +++ b/tests/service/data/SyntaxTree/Pattern/Record 02.fs.bsl @@ -0,0 +1,21 @@ +ImplFile + (ParsedImplFileInput + ("/root/Pattern/Record 02.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Match + (Yes (3,0--3,13), Const (Unit, (3,6--3,8)), + [SynMatchClause + (Record + ([(([], A), Some (4,6--4,7), Wild (4,8--4,9)); + (([], B), Some (4,13--4,14), Wild (4,15--4,16))], + (4,2--4,18)), None, Const (Unit, (4,22--4,24)), + (4,2--4,24), Yes, { ArrowRange = Some (4,19--4,21) + BarRange = Some (4,0--4,1) })], + (3,0--4,24), { MatchKeyword = (3,0--3,5) + WithKeyword = (3,9--3,13) }), (3,0--4,24))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,24), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Pattern/Record 03.fs b/tests/service/data/SyntaxTree/Pattern/Record 03.fs new file mode 100644 index 00000000000..82ba003d1d7 --- /dev/null +++ b/tests/service/data/SyntaxTree/Pattern/Record 03.fs @@ -0,0 +1,4 @@ +module Module + +match () with +| { A = } -> () diff --git a/tests/service/data/SyntaxTree/Pattern/Record 03.fs.bsl b/tests/service/data/SyntaxTree/Pattern/Record 03.fs.bsl new file mode 100644 index 00000000000..6ce17ab990c --- /dev/null +++ b/tests/service/data/SyntaxTree/Pattern/Record 03.fs.bsl @@ -0,0 +1,22 @@ +ImplFile + (ParsedImplFileInput + ("/root/Pattern/Record 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Match + (Yes (3,0--3,13), Const (Unit, (3,6--3,8)), + [SynMatchClause + (Record + ([(([], A), Some (4,6--4,7), Wild (4,7--4,7))], + (4,2--4,9)), None, Const (Unit, (4,13--4,15)), + (4,2--4,15), Yes, { ArrowRange = Some (4,10--4,12) + BarRange = Some (4,0--4,1) })], + (3,0--4,15), { MatchKeyword = (3,0--3,5) + WithKeyword = (3,9--3,13) }), (3,0--4,15))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,15), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(4,8)-(4,9) parse error Unexpected symbol '}' in pattern diff --git a/tests/service/data/SyntaxTree/Pattern/Record 04.fs b/tests/service/data/SyntaxTree/Pattern/Record 04.fs new file mode 100644 index 00000000000..b1501298af3 --- /dev/null +++ b/tests/service/data/SyntaxTree/Pattern/Record 04.fs @@ -0,0 +1,4 @@ +module Module + +match () with +| { A } -> () diff --git a/tests/service/data/SyntaxTree/Pattern/Record 04.fs.bsl b/tests/service/data/SyntaxTree/Pattern/Record 04.fs.bsl new file mode 100644 index 00000000000..e96ed95a57c --- /dev/null +++ b/tests/service/data/SyntaxTree/Pattern/Record 04.fs.bsl @@ -0,0 +1,21 @@ +ImplFile + (ParsedImplFileInput + ("/root/Pattern/Record 04.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Match + (Yes (3,0--3,13), Const (Unit, (3,6--3,8)), + [SynMatchClause + (Record ([(([], A), None, Wild (4,5--4,5))], (4,2--4,7)), + None, Const (Unit, (4,11--4,13)), (4,2--4,13), Yes, + { ArrowRange = Some (4,8--4,10) + BarRange = Some (4,0--4,1) })], (3,0--4,13), + { MatchKeyword = (3,0--3,5) + WithKeyword = (3,9--3,13) }), (3,0--4,13))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,13), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(4,6)-(4,7) parse error Unexpected symbol '}' in pattern. Expected '.', '=' or other token. diff --git a/tests/service/data/SyntaxTree/Pattern/Record 05.fs b/tests/service/data/SyntaxTree/Pattern/Record 05.fs new file mode 100644 index 00000000000..6d2f1117a51 --- /dev/null +++ b/tests/service/data/SyntaxTree/Pattern/Record 05.fs @@ -0,0 +1,4 @@ +module Module + +match () with +| { } -> () diff --git a/tests/service/data/SyntaxTree/Pattern/Record 05.fs.bsl b/tests/service/data/SyntaxTree/Pattern/Record 05.fs.bsl new file mode 100644 index 00000000000..ef0a9a11727 --- /dev/null +++ b/tests/service/data/SyntaxTree/Pattern/Record 05.fs.bsl @@ -0,0 +1,20 @@ +ImplFile + (ParsedImplFileInput + ("/root/Pattern/Record 05.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Match + (Yes (3,0--3,13), Const (Unit, (3,6--3,8)), + [SynMatchClause + (Record ([], (4,2--4,5)), None, Const (Unit, (4,9--4,11)), + (4,2--4,11), Yes, { ArrowRange = Some (4,6--4,8) + BarRange = Some (4,0--4,1) })], + (3,0--4,11), { MatchKeyword = (3,0--3,5) + WithKeyword = (3,9--3,13) }), (3,0--4,11))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,11), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(4,4)-(4,5) parse error Unexpected symbol '}' in pattern. Expected identifier, 'global' or other token. diff --git a/tests/service/data/SyntaxTree/Pattern/Record 06.fs b/tests/service/data/SyntaxTree/Pattern/Record 06.fs new file mode 100644 index 00000000000..bb5434994c2 --- /dev/null +++ b/tests/service/data/SyntaxTree/Pattern/Record 06.fs @@ -0,0 +1,4 @@ +module Module + +match () with +| { _ } -> () diff --git a/tests/service/data/SyntaxTree/Pattern/Record 06.fs.bsl b/tests/service/data/SyntaxTree/Pattern/Record 06.fs.bsl new file mode 100644 index 00000000000..7781aa39c9b --- /dev/null +++ b/tests/service/data/SyntaxTree/Pattern/Record 06.fs.bsl @@ -0,0 +1,20 @@ +ImplFile + (ParsedImplFileInput + ("/root/Pattern/Record 06.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Match + (Yes (3,0--3,13), Const (Unit, (3,6--3,8)), + [SynMatchClause + (Record ([], (4,2--4,7)), None, Const (Unit, (4,11--4,13)), + (4,2--4,13), Yes, { ArrowRange = Some (4,8--4,10) + BarRange = Some (4,0--4,1) })], + (3,0--4,13), { MatchKeyword = (3,0--3,5) + WithKeyword = (3,9--3,13) }), (3,0--4,13))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,13), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(4,4)-(4,5) parse error Unexpected symbol '_' in pattern. Expected identifier, 'global' or other token. diff --git a/tests/service/data/SyntaxTree/Pattern/SynPatRecordContainsTheRangeOfTheEqualsSign.fs b/tests/service/data/SyntaxTree/Pattern/SynPatRecordContainsTheRangeOfTheEqualsSign.fs deleted file mode 100644 index 6afc9657c4f..00000000000 --- a/tests/service/data/SyntaxTree/Pattern/SynPatRecordContainsTheRangeOfTheEqualsSign.fs +++ /dev/null @@ -1,4 +0,0 @@ - -match x with -| { Foo = bar } -> () -| _ -> () diff --git a/tests/service/data/SyntaxTree/Pattern/SynPatRecordContainsTheRangeOfTheEqualsSign.fs.bsl b/tests/service/data/SyntaxTree/Pattern/SynPatRecordContainsTheRangeOfTheEqualsSign.fs.bsl deleted file mode 100644 index c5f82a94977..00000000000 --- a/tests/service/data/SyntaxTree/Pattern/SynPatRecordContainsTheRangeOfTheEqualsSign.fs.bsl +++ /dev/null @@ -1,26 +0,0 @@ -ImplFile - (ParsedImplFileInput - ("/root/Pattern/SynPatRecordContainsTheRangeOfTheEqualsSign.fs", false, - QualifiedNameOfFile SynPatRecordContainsTheRangeOfTheEqualsSign, [], [], - [SynModuleOrNamespace - ([SynPatRecordContainsTheRangeOfTheEqualsSign], false, AnonModule, - [Expr - (Match - (Yes (2,0--2,12), Ident x, - [SynMatchClause - (Record - ([(([], Foo), (3,8--3,9), - Named - (SynIdent (bar, None), false, None, (3,10--3,13)))], - (3,2--3,15)), None, Const (Unit, (3,19--3,21)), - (3,2--3,21), Yes, { ArrowRange = Some (3,16--3,18) - BarRange = Some (3,0--3,1) }); - SynMatchClause - (Wild (4,2--4,3), None, Const (Unit, (4,7--4,9)), (4,2--4,9), - Yes, { ArrowRange = Some (4,4--4,6) - BarRange = Some (4,0--4,1) })], (2,0--4,9), - { MatchKeyword = (2,0--2,5) - WithKeyword = (2,8--2,12) }), (2,0--4,9))], PreXmlDocEmpty, - [], None, (2,0--5,0), { LeadingKeyword = None })], (true, true), - { ConditionalDirectives = [] - CodeComments = [] }, set [])) From f7d99fe2e5a2f0a2a06a65c018fdafed23e134d4 Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Mon, 4 Sep 2023 13:50:39 +0200 Subject: [PATCH 2/2] Update surface area baselines --- ...arp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl | 6 +++--- ...p.Compiler.Service.SurfaceArea.netstandard20.release.bsl | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl index 92ea2574c7a..f1c1166d11b 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl @@ -8106,8 +8106,8 @@ FSharp.Compiler.Syntax.SynPat+QuoteExpr: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynPat+QuoteExpr: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynPat+Record: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynPat+Record: FSharp.Compiler.Text.Range range -FSharp.Compiler.Syntax.SynPat+Record: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Text.Range,FSharp.Compiler.Syntax.SynPat]] fieldPats -FSharp.Compiler.Syntax.SynPat+Record: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Text.Range,FSharp.Compiler.Syntax.SynPat]] get_fieldPats() +FSharp.Compiler.Syntax.SynPat+Record: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.Ident],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynPat]] fieldPats +FSharp.Compiler.Syntax.SynPat+Record: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.Ident],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynPat]] get_fieldPats() FSharp.Compiler.Syntax.SynPat+Tags: Int32 Ands FSharp.Compiler.Syntax.SynPat+Tags: Int32 ArrayOrList FSharp.Compiler.Syntax.SynPat+Tags: Int32 As @@ -8200,7 +8200,7 @@ FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewOptionalVal(FSha FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewOr(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynPatOrTrivia) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewParen(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewQuoteExpr(FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Text.Range) -FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewRecord(Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Text.Range,FSharp.Compiler.Syntax.SynPat]], FSharp.Compiler.Text.Range) +FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewRecord(Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.Ident],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynPat]], FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewTuple(Boolean, Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynPat], Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Text.Range], FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewTyped(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Syntax.SynType, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewWild(FSharp.Compiler.Text.Range) diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl index 92ea2574c7a..f1c1166d11b 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl @@ -8106,8 +8106,8 @@ FSharp.Compiler.Syntax.SynPat+QuoteExpr: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynPat+QuoteExpr: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynPat+Record: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynPat+Record: FSharp.Compiler.Text.Range range -FSharp.Compiler.Syntax.SynPat+Record: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Text.Range,FSharp.Compiler.Syntax.SynPat]] fieldPats -FSharp.Compiler.Syntax.SynPat+Record: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Text.Range,FSharp.Compiler.Syntax.SynPat]] get_fieldPats() +FSharp.Compiler.Syntax.SynPat+Record: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.Ident],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynPat]] fieldPats +FSharp.Compiler.Syntax.SynPat+Record: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.Ident],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynPat]] get_fieldPats() FSharp.Compiler.Syntax.SynPat+Tags: Int32 Ands FSharp.Compiler.Syntax.SynPat+Tags: Int32 ArrayOrList FSharp.Compiler.Syntax.SynPat+Tags: Int32 As @@ -8200,7 +8200,7 @@ FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewOptionalVal(FSha FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewOr(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynPatOrTrivia) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewParen(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewQuoteExpr(FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Text.Range) -FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewRecord(Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Text.Range,FSharp.Compiler.Syntax.SynPat]], FSharp.Compiler.Text.Range) +FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewRecord(Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.Ident],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynPat]], FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewTuple(Boolean, Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynPat], Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Text.Range], FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewTyped(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Syntax.SynType, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewWild(FSharp.Compiler.Text.Range)