From 063a8a469b406deb5eb2ccf8c70a0eb62a5aecfc Mon Sep 17 00:00:00 2001 From: nojaf Date: Sun, 2 Oct 2022 17:03:58 +0200 Subject: [PATCH 1/2] Add SynPat.Cons. --- src/Compiler/Checking/CheckPatterns.fs | 5 ++++ src/Compiler/Service/ServiceParseTreeWalk.fs | 3 ++- src/Compiler/Service/ServiceParsedInputOps.fs | 6 +++-- src/Compiler/Service/ServiceXmlDocParser.fs | 1 + src/Compiler/SyntaxTree/SyntaxTree.fs | 3 +++ src/Compiler/SyntaxTree/SyntaxTree.fsi | 3 +++ src/Compiler/SyntaxTree/SyntaxTrivia.fs | 3 +++ src/Compiler/SyntaxTree/SyntaxTrivia.fsi | 8 +++++++ src/Compiler/pars.fsy | 6 +++-- ...erService.SurfaceArea.netstandard.expected | 18 ++++++++++++++ tests/service/SyntaxTreeTests/PatternTests.fs | 24 +++++++++++++++---- 11 files changed, 71 insertions(+), 9 deletions(-) diff --git a/src/Compiler/Checking/CheckPatterns.fs b/src/Compiler/Checking/CheckPatterns.fs index 238e3668de7..aad9ffaa4fc 100644 --- a/src/Compiler/Checking/CheckPatterns.fs +++ b/src/Compiler/Checking/CheckPatterns.fs @@ -289,6 +289,11 @@ and TcPat warnOnUpper (cenv: cenv) env valReprInfo vFlags (patEnv: TcPatLinearEn | SynPat.Or (pat1, pat2, m, _) -> TcPatOr warnOnUpper cenv env vFlags patEnv ty pat1 pat2 m + | SynPat.Cons(pat1, pat2, m, trivia) -> + let longDotId = SynLongIdent((mkSynCaseName trivia.ColonColonRange opNameCons), [], [Some (FSharp.Compiler.SyntaxTrivia.IdentTrivia.OriginalNotation "::")]) + let args = SynArgPats.Pats [ SynPat.Tuple(false, [ pat1; pat2 ], m) ] + TcPatLongIdent warnOnUpper cenv env ad valReprInfo vFlags patEnv ty (longDotId, None, args, None, m) + | SynPat.Ands (pats, m) -> TcPatAnds warnOnUpper cenv env vFlags patEnv ty pats m diff --git a/src/Compiler/Service/ServiceParseTreeWalk.fs b/src/Compiler/Service/ServiceParseTreeWalk.fs index c75b133a371..defac663552 100755 --- a/src/Compiler/Service/ServiceParseTreeWalk.fs +++ b/src/Compiler/Service/ServiceParseTreeWalk.fs @@ -789,7 +789,8 @@ module SyntaxTraversal = match p with | SynPat.Paren (p, _) -> traversePat path p | SynPat.As (p1, p2, _) - | SynPat.Or (p1, p2, _, _) -> [ p1; p2 ] |> List.tryPick (traversePat path) + | SynPat.Or (p1, p2, _, _) + | SynPat.Cons (p1, p2, _, _) -> [ p1; p2 ] |> List.tryPick (traversePat path) | SynPat.Ands (ps, _) | SynPat.Tuple (_, ps, _) | SynPat.ArrayOrList (_, ps, _) -> ps |> List.tryPick (traversePat path) diff --git a/src/Compiler/Service/ServiceParsedInputOps.fs b/src/Compiler/Service/ServiceParsedInputOps.fs index ab24bcb5a44..ae50e59f270 100644 --- a/src/Compiler/Service/ServiceParsedInputOps.fs +++ b/src/Compiler/Service/ServiceParsedInputOps.fs @@ -619,7 +619,8 @@ module ParsedInput = | SynPat.As (pat1, pat2, _) -> List.tryPick walkPat [ pat1; pat2 ] | SynPat.Typed (pat, t, _) -> walkPat pat |> Option.orElseWith (fun () -> walkType t) | SynPat.Attrib (pat, Attributes attrs, _) -> walkPat pat |> Option.orElseWith (fun () -> List.tryPick walkAttribute attrs) - | SynPat.Or (pat1, pat2, _, _) -> List.tryPick walkPat [ pat1; pat2 ] + | SynPat.Or (pat1, pat2, _, _) + | SynPat.Cons (pat1, pat2, _, _) -> List.tryPick walkPat [ pat1; pat2 ] | SynPat.LongIdent (typarDecls = typars; argPats = ConstructorPats pats; range = r) -> ifPosInRange r (fun _ -> kind) |> Option.orElseWith (fun () -> @@ -1638,7 +1639,8 @@ module ParsedInput = walkPat pat List.iter walkAttribute attrs | SynPat.As (pat1, pat2, _) - | SynPat.Or (pat1, pat2, _, _) -> List.iter walkPat [ pat1; pat2 ] + | SynPat.Or (pat1, pat2, _, _) + | SynPat.Cons (pat1, pat2, _, _) -> List.iter walkPat [ pat1; pat2 ] | SynPat.LongIdent (longDotId = ident; typarDecls = typars; argPats = ConstructorPats pats) -> addLongIdentWithDots ident diff --git a/src/Compiler/Service/ServiceXmlDocParser.fs b/src/Compiler/Service/ServiceXmlDocParser.fs index ae9217e8a02..00388365e08 100644 --- a/src/Compiler/Service/ServiceXmlDocParser.fs +++ b/src/Compiler/Service/ServiceXmlDocParser.fs @@ -25,6 +25,7 @@ module XmlDocParsing = | SynPat.Typed (pat, _type, _range) -> digNamesFrom pat | SynPat.Attrib (pat, _attrs, _range) -> digNamesFrom pat | SynPat.LongIdent(argPats = ConstructorPats pats) -> pats |> List.collect digNamesFrom + | SynPat.Cons (p1, p2, _, _) -> List.collect digNamesFrom [ p1; p2 ] | SynPat.Tuple (_, pats, _range) -> pats |> List.collect digNamesFrom | SynPat.Paren (pat, _range) -> digNamesFrom pat | SynPat.OptionalVal (id, _) -> [ id.idText ] diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/Compiler/SyntaxTree/SyntaxTree.fs index 11c0c28375b..2d1391ed8d5 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fs +++ b/src/Compiler/SyntaxTree/SyntaxTree.fs @@ -908,6 +908,8 @@ type SynPat = | Or of lhsPat: SynPat * rhsPat: SynPat * range: range * trivia: SynPatOrTrivia + | Cons of lhsPat: SynPat * rhsPat: SynPat * range: range * trivia: SynPatConsTrivia + | Ands of pats: SynPat list * range: range | As of lhsPat: SynPat * rhsPat: SynPat * range: range @@ -953,6 +955,7 @@ type SynPat = | SynPat.Wild (range = m) | SynPat.Named (range = m) | SynPat.Or (range = m) + | SynPat.Cons (range = m) | SynPat.Ands (range = m) | SynPat.As (range = m) | SynPat.LongIdent (range = m) diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/Compiler/SyntaxTree/SyntaxTree.fsi index 2a34ba55c46..49b08a1e8ba 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fsi +++ b/src/Compiler/SyntaxTree/SyntaxTree.fsi @@ -1050,6 +1050,9 @@ type SynPat = /// A disjunctive pattern 'pat1 | pat2' | Or of lhsPat: SynPat * rhsPat: SynPat * range: range * trivia: SynPatOrTrivia + /// A conjunctive pattern 'pat1 :: pat2' + | Cons of lhsPat: SynPat * rhsPat: SynPat * range: range * trivia: SynPatConsTrivia + /// A conjunctive pattern 'pat1 & pat2' | Ands of pats: SynPat list * range: range diff --git a/src/Compiler/SyntaxTree/SyntaxTrivia.fs b/src/Compiler/SyntaxTree/SyntaxTrivia.fs index 5f500caec88..02f701d4887 100644 --- a/src/Compiler/SyntaxTree/SyntaxTrivia.fs +++ b/src/Compiler/SyntaxTree/SyntaxTrivia.fs @@ -122,6 +122,9 @@ type SynUnionCaseTrivia = { BarRange: range option } [] type SynPatOrTrivia = { BarRange: range } +[] +type SynPatConsTrivia = { ColonColonRange: range } + [] type SynTypeDefnTrivia = { diff --git a/src/Compiler/SyntaxTree/SyntaxTrivia.fsi b/src/Compiler/SyntaxTree/SyntaxTrivia.fsi index 3cac74f9026..f51e2c6b8b4 100644 --- a/src/Compiler/SyntaxTree/SyntaxTrivia.fsi +++ b/src/Compiler/SyntaxTree/SyntaxTrivia.fsi @@ -199,6 +199,14 @@ type SynPatOrTrivia = BarRange: range } +/// Represents additional information for SynPat.Cons +[] +type SynPatConsTrivia = + { + /// The syntax range of the `::` token. + ColonColonRange: range + } + /// Represents additional information for SynTypeDefn [] type SynTypeDefnTrivia = diff --git a/src/Compiler/pars.fsy b/src/Compiler/pars.fsy index 63dba4eb2cb..291baa5995b 100644 --- a/src/Compiler/pars.fsy +++ b/src/Compiler/pars.fsy @@ -3124,7 +3124,8 @@ headBindingPattern: SynPat.Or($1, $3, rhs2 parseState 1 3, { BarRange = mBar }) } | headBindingPattern COLON_COLON headBindingPattern - { SynPat.LongIdent (SynLongIdent(mkSynCaseName (rhs parseState 2) opNameCons, [], [ Some (IdentTrivia.OriginalNotation "::") ]), None, None, SynArgPats.Pats [SynPat.Tuple (false, [$1;$3], rhs2 parseState 1 3)], None, lhs parseState) } + { let mColonColon = rhs parseState 2 + SynPat.Cons($1, $3, rhs2 parseState 1 3, { ColonColonRange = mColonColon }) } | tuplePatternElements %prec pat_tuple { let pats = normalizeTuplePat $1 @@ -3398,7 +3399,8 @@ parenPattern: SynPat.Attrib($2, $1, mLhs) } | parenPattern COLON_COLON parenPattern - { SynPat.LongIdent (SynLongIdent(mkSynCaseName (rhs parseState 2) opNameCons, [], [ Some (IdentTrivia.OriginalNotation "::") ]), None, None, SynArgPats.Pats [ SynPat.Tuple (false, [$1;$3], rhs2 parseState 1 3) ], None, lhs parseState) } + { let mColonColon = rhs parseState 2 + SynPat.Cons($1, $3, rhs2 parseState 1 3, { ColonColonRange = mColonColon }) } | constrPattern { $1 } diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected b/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected index 4bb3025a106..67d6015893a 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected @@ -7976,6 +7976,14 @@ FSharp.Compiler.Syntax.SynPat+Attrib: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynPat+Attrib: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynPat+Attrib: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList] attributes FSharp.Compiler.Syntax.SynPat+Attrib: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList] get_attributes() +FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.Syntax.SynPat get_lhsPat() +FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.Syntax.SynPat get_rhsPat() +FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.Syntax.SynPat lhsPat +FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.Syntax.SynPat rhsPat +FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia get_trivia() +FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia trivia +FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.Text.Range get_range() +FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynPat+Const: FSharp.Compiler.Syntax.SynConst constant FSharp.Compiler.Syntax.SynPat+Const: FSharp.Compiler.Syntax.SynConst get_constant() FSharp.Compiler.Syntax.SynPat+Const: FSharp.Compiler.Text.Range get_range() @@ -8054,6 +8062,7 @@ FSharp.Compiler.Syntax.SynPat+Tags: Int32 Ands FSharp.Compiler.Syntax.SynPat+Tags: Int32 ArrayOrList FSharp.Compiler.Syntax.SynPat+Tags: Int32 As FSharp.Compiler.Syntax.SynPat+Tags: Int32 Attrib +FSharp.Compiler.Syntax.SynPat+Tags: Int32 Cons FSharp.Compiler.Syntax.SynPat+Tags: Int32 Const FSharp.Compiler.Syntax.SynPat+Tags: Int32 DeprecatedCharRange FSharp.Compiler.Syntax.SynPat+Tags: Int32 FromParseError @@ -8088,6 +8097,7 @@ FSharp.Compiler.Syntax.SynPat: Boolean IsAnds FSharp.Compiler.Syntax.SynPat: Boolean IsArrayOrList FSharp.Compiler.Syntax.SynPat: Boolean IsAs FSharp.Compiler.Syntax.SynPat: Boolean IsAttrib +FSharp.Compiler.Syntax.SynPat: Boolean IsCons FSharp.Compiler.Syntax.SynPat: Boolean IsConst FSharp.Compiler.Syntax.SynPat: Boolean IsDeprecatedCharRange FSharp.Compiler.Syntax.SynPat: Boolean IsFromParseError @@ -8108,6 +8118,7 @@ FSharp.Compiler.Syntax.SynPat: Boolean get_IsAnds() FSharp.Compiler.Syntax.SynPat: Boolean get_IsArrayOrList() FSharp.Compiler.Syntax.SynPat: Boolean get_IsAs() FSharp.Compiler.Syntax.SynPat: Boolean get_IsAttrib() +FSharp.Compiler.Syntax.SynPat: Boolean get_IsCons() FSharp.Compiler.Syntax.SynPat: Boolean get_IsConst() FSharp.Compiler.Syntax.SynPat: Boolean get_IsDeprecatedCharRange() FSharp.Compiler.Syntax.SynPat: Boolean get_IsFromParseError() @@ -8128,6 +8139,7 @@ FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewAnds(Microsoft.F FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewArrayOrList(Boolean, Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynPat], FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewAs(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewAttrib(FSharp.Compiler.Syntax.SynPat, Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList], FSharp.Compiler.Text.Range) +FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewCons(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewConst(FSharp.Compiler.Syntax.SynConst, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewDeprecatedCharRange(Char, Char, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewFromParseError(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Text.Range) @@ -8148,6 +8160,7 @@ FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+Ands FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+ArrayOrList FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+As FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+Attrib +FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+Cons FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+Const FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+DeprecatedCharRange FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+FromParseError @@ -9556,6 +9569,11 @@ FSharp.Compiler.SyntaxTrivia.SynModuleSigDeclNestedModuleTrivia: Microsoft.FShar FSharp.Compiler.SyntaxTrivia.SynModuleSigDeclNestedModuleTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_ModuleKeyword() FSharp.Compiler.SyntaxTrivia.SynModuleSigDeclNestedModuleTrivia: System.String ToString() FSharp.Compiler.SyntaxTrivia.SynModuleSigDeclNestedModuleTrivia: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range]) +FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia +FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia: FSharp.Compiler.Text.Range ColonColonRange +FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia: FSharp.Compiler.Text.Range get_ColonColonRange() +FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia: System.String ToString() +FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia: Void .ctor(FSharp.Compiler.Text.Range) FSharp.Compiler.SyntaxTrivia.SynPatOrTrivia FSharp.Compiler.SyntaxTrivia.SynPatOrTrivia: FSharp.Compiler.Text.Range BarRange FSharp.Compiler.SyntaxTrivia.SynPatOrTrivia: FSharp.Compiler.Text.Range get_BarRange() diff --git a/tests/service/SyntaxTreeTests/PatternTests.fs b/tests/service/SyntaxTreeTests/PatternTests.fs index 72b10da7790..53907a0805e 100644 --- a/tests/service/SyntaxTreeTests/PatternTests.fs +++ b/tests/service/SyntaxTreeTests/PatternTests.fs @@ -73,10 +73,10 @@ let (head::tail) = [ 1;2;4] match parseResults with | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [ SynModuleDecl.Let( - bindings = [ SynBinding(headPat = SynPat.Paren(SynPat.LongIdent(longDotId = SynLongIdent([ opColonColonIdent ], _, [ Some (IdentTrivia.OriginalNotation "::") ])), _)) ] + bindings = [ SynBinding(headPat = SynPat.Paren(pat = SynPat.Cons(trivia = trivia))) ] ) ]) ])) -> - Assert.AreEqual("op_ColonColon", opColonColonIdent.idText) + assertRange (2,9) (2,11) trivia.ColonColonRange | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}" [] @@ -92,11 +92,11 @@ match x with | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [ SynModuleDecl.Expr( expr = SynExpr.Match(clauses = [ - SynMatchClause(pat = SynPat.LongIdent(longDotId = SynLongIdent([ opColonColonIdent ], _, [ Some (IdentTrivia.OriginalNotation "::") ]))) + SynMatchClause(pat = SynPat.Cons(trivia = trivia)) ]) ) ]) ])) -> - Assert.AreEqual("op_ColonColon", opColonColonIdent.idText) + assertRange (3, 9) (3, 11) trivia.ColonColonRange | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}" [] @@ -122,3 +122,19 @@ match data with ]) ])) -> assertRange (3, 13) (5, 13) trivia.ParenRange | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}" + +[] +let ``:: in head pattern`` () = + let parseResults = + getParseResults + """ +let 1 :: _ = [ 4; 5; 6 ] +""" + + match parseResults with + | ParsedInput.ImplFile(ParsedImplFileInput(contents = [ SynModuleOrNamespace(decls = [ + SynModuleDecl.Let(bindings = [ SynBinding(headPat = + SynPat.Cons(trivia = trivia)) ]) + ]) ])) -> + assertRange (2,6) (2, 8) trivia.ColonColonRange + | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}" From 0ba549e118e8e6a4041b16529bcbfadc3f37c379 Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 3 Oct 2022 08:24:07 +0200 Subject: [PATCH 2/2] Rename SynPat.Cons to SynPat.ListCons --- src/Compiler/Checking/CheckPatterns.fs | 2 +- src/Compiler/Service/ServiceParseTreeWalk.fs | 2 +- src/Compiler/Service/ServiceParsedInputOps.fs | 4 +-- src/Compiler/Service/ServiceXmlDocParser.fs | 2 +- src/Compiler/SyntaxTree/SyntaxTree.fs | 4 +-- src/Compiler/SyntaxTree/SyntaxTree.fsi | 2 +- src/Compiler/SyntaxTree/SyntaxTrivia.fs | 2 +- src/Compiler/SyntaxTree/SyntaxTrivia.fsi | 2 +- src/Compiler/pars.fsy | 4 +-- ...erService.SurfaceArea.netstandard.expected | 36 +++++++++---------- tests/service/SyntaxTreeTests/PatternTests.fs | 6 ++-- 11 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/Compiler/Checking/CheckPatterns.fs b/src/Compiler/Checking/CheckPatterns.fs index aad9ffaa4fc..70382723f92 100644 --- a/src/Compiler/Checking/CheckPatterns.fs +++ b/src/Compiler/Checking/CheckPatterns.fs @@ -289,7 +289,7 @@ and TcPat warnOnUpper (cenv: cenv) env valReprInfo vFlags (patEnv: TcPatLinearEn | SynPat.Or (pat1, pat2, m, _) -> TcPatOr warnOnUpper cenv env vFlags patEnv ty pat1 pat2 m - | SynPat.Cons(pat1, pat2, m, trivia) -> + | SynPat.ListCons(pat1, pat2, m, trivia) -> let longDotId = SynLongIdent((mkSynCaseName trivia.ColonColonRange opNameCons), [], [Some (FSharp.Compiler.SyntaxTrivia.IdentTrivia.OriginalNotation "::")]) let args = SynArgPats.Pats [ SynPat.Tuple(false, [ pat1; pat2 ], m) ] TcPatLongIdent warnOnUpper cenv env ad valReprInfo vFlags patEnv ty (longDotId, None, args, None, m) diff --git a/src/Compiler/Service/ServiceParseTreeWalk.fs b/src/Compiler/Service/ServiceParseTreeWalk.fs index defac663552..f3443fd95ff 100755 --- a/src/Compiler/Service/ServiceParseTreeWalk.fs +++ b/src/Compiler/Service/ServiceParseTreeWalk.fs @@ -790,7 +790,7 @@ module SyntaxTraversal = | SynPat.Paren (p, _) -> traversePat path p | SynPat.As (p1, p2, _) | SynPat.Or (p1, p2, _, _) - | SynPat.Cons (p1, p2, _, _) -> [ p1; p2 ] |> List.tryPick (traversePat path) + | SynPat.ListCons (p1, p2, _, _) -> [ p1; p2 ] |> List.tryPick (traversePat path) | SynPat.Ands (ps, _) | SynPat.Tuple (_, ps, _) | SynPat.ArrayOrList (_, ps, _) -> ps |> List.tryPick (traversePat path) diff --git a/src/Compiler/Service/ServiceParsedInputOps.fs b/src/Compiler/Service/ServiceParsedInputOps.fs index ae50e59f270..86d560091ea 100644 --- a/src/Compiler/Service/ServiceParsedInputOps.fs +++ b/src/Compiler/Service/ServiceParsedInputOps.fs @@ -620,7 +620,7 @@ module ParsedInput = | SynPat.Typed (pat, t, _) -> walkPat pat |> Option.orElseWith (fun () -> walkType t) | SynPat.Attrib (pat, Attributes attrs, _) -> walkPat pat |> Option.orElseWith (fun () -> List.tryPick walkAttribute attrs) | SynPat.Or (pat1, pat2, _, _) - | SynPat.Cons (pat1, pat2, _, _) -> List.tryPick walkPat [ pat1; pat2 ] + | SynPat.ListCons (pat1, pat2, _, _) -> List.tryPick walkPat [ pat1; pat2 ] | SynPat.LongIdent (typarDecls = typars; argPats = ConstructorPats pats; range = r) -> ifPosInRange r (fun _ -> kind) |> Option.orElseWith (fun () -> @@ -1640,7 +1640,7 @@ module ParsedInput = List.iter walkAttribute attrs | SynPat.As (pat1, pat2, _) | SynPat.Or (pat1, pat2, _, _) - | SynPat.Cons (pat1, pat2, _, _) -> List.iter walkPat [ pat1; pat2 ] + | SynPat.ListCons (pat1, pat2, _, _) -> List.iter walkPat [ pat1; pat2 ] | SynPat.LongIdent (longDotId = ident; typarDecls = typars; argPats = ConstructorPats pats) -> addLongIdentWithDots ident diff --git a/src/Compiler/Service/ServiceXmlDocParser.fs b/src/Compiler/Service/ServiceXmlDocParser.fs index 00388365e08..4a7eca7868d 100644 --- a/src/Compiler/Service/ServiceXmlDocParser.fs +++ b/src/Compiler/Service/ServiceXmlDocParser.fs @@ -25,7 +25,7 @@ module XmlDocParsing = | SynPat.Typed (pat, _type, _range) -> digNamesFrom pat | SynPat.Attrib (pat, _attrs, _range) -> digNamesFrom pat | SynPat.LongIdent(argPats = ConstructorPats pats) -> pats |> List.collect digNamesFrom - | SynPat.Cons (p1, p2, _, _) -> List.collect digNamesFrom [ p1; p2 ] + | SynPat.ListCons (p1, p2, _, _) -> List.collect digNamesFrom [ p1; p2 ] | SynPat.Tuple (_, pats, _range) -> pats |> List.collect digNamesFrom | SynPat.Paren (pat, _range) -> digNamesFrom pat | SynPat.OptionalVal (id, _) -> [ id.idText ] diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/Compiler/SyntaxTree/SyntaxTree.fs index 2d1391ed8d5..9412e8486ae 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fs +++ b/src/Compiler/SyntaxTree/SyntaxTree.fs @@ -908,7 +908,7 @@ type SynPat = | Or of lhsPat: SynPat * rhsPat: SynPat * range: range * trivia: SynPatOrTrivia - | Cons of lhsPat: SynPat * rhsPat: SynPat * range: range * trivia: SynPatConsTrivia + | ListCons of lhsPat: SynPat * rhsPat: SynPat * range: range * trivia: SynPatListConsTrivia | Ands of pats: SynPat list * range: range @@ -955,7 +955,7 @@ type SynPat = | SynPat.Wild (range = m) | SynPat.Named (range = m) | SynPat.Or (range = m) - | SynPat.Cons (range = m) + | SynPat.ListCons (range = m) | SynPat.Ands (range = m) | SynPat.As (range = m) | SynPat.LongIdent (range = m) diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/Compiler/SyntaxTree/SyntaxTree.fsi index 49b08a1e8ba..1dfd44d2c0f 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fsi +++ b/src/Compiler/SyntaxTree/SyntaxTree.fsi @@ -1051,7 +1051,7 @@ type SynPat = | Or of lhsPat: SynPat * rhsPat: SynPat * range: range * trivia: SynPatOrTrivia /// A conjunctive pattern 'pat1 :: pat2' - | Cons of lhsPat: SynPat * rhsPat: SynPat * range: range * trivia: SynPatConsTrivia + | ListCons of lhsPat: SynPat * rhsPat: SynPat * range: range * trivia: SynPatListConsTrivia /// A conjunctive pattern 'pat1 & pat2' | Ands of pats: SynPat list * range: range diff --git a/src/Compiler/SyntaxTree/SyntaxTrivia.fs b/src/Compiler/SyntaxTree/SyntaxTrivia.fs index 02f701d4887..e4b58c85c00 100644 --- a/src/Compiler/SyntaxTree/SyntaxTrivia.fs +++ b/src/Compiler/SyntaxTree/SyntaxTrivia.fs @@ -123,7 +123,7 @@ type SynUnionCaseTrivia = { BarRange: range option } type SynPatOrTrivia = { BarRange: range } [] -type SynPatConsTrivia = { ColonColonRange: range } +type SynPatListConsTrivia = { ColonColonRange: range } [] type SynTypeDefnTrivia = diff --git a/src/Compiler/SyntaxTree/SyntaxTrivia.fsi b/src/Compiler/SyntaxTree/SyntaxTrivia.fsi index f51e2c6b8b4..3e0dea3db0b 100644 --- a/src/Compiler/SyntaxTree/SyntaxTrivia.fsi +++ b/src/Compiler/SyntaxTree/SyntaxTrivia.fsi @@ -201,7 +201,7 @@ type SynPatOrTrivia = /// Represents additional information for SynPat.Cons [] -type SynPatConsTrivia = +type SynPatListConsTrivia = { /// The syntax range of the `::` token. ColonColonRange: range diff --git a/src/Compiler/pars.fsy b/src/Compiler/pars.fsy index 291baa5995b..c9dd108bf2d 100644 --- a/src/Compiler/pars.fsy +++ b/src/Compiler/pars.fsy @@ -3125,7 +3125,7 @@ headBindingPattern: | headBindingPattern COLON_COLON headBindingPattern { let mColonColon = rhs parseState 2 - SynPat.Cons($1, $3, rhs2 parseState 1 3, { ColonColonRange = mColonColon }) } + SynPat.ListCons($1, $3, rhs2 parseState 1 3, { ColonColonRange = mColonColon }) } | tuplePatternElements %prec pat_tuple { let pats = normalizeTuplePat $1 @@ -3400,7 +3400,7 @@ parenPattern: | parenPattern COLON_COLON parenPattern { let mColonColon = rhs parseState 2 - SynPat.Cons($1, $3, rhs2 parseState 1 3, { ColonColonRange = mColonColon }) } + SynPat.ListCons($1, $3, rhs2 parseState 1 3, { ColonColonRange = mColonColon }) } | constrPattern { $1 } diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected b/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected index 67d6015893a..a6713fdbc26 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected @@ -7976,14 +7976,6 @@ FSharp.Compiler.Syntax.SynPat+Attrib: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynPat+Attrib: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynPat+Attrib: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList] attributes FSharp.Compiler.Syntax.SynPat+Attrib: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList] get_attributes() -FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.Syntax.SynPat get_lhsPat() -FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.Syntax.SynPat get_rhsPat() -FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.Syntax.SynPat lhsPat -FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.Syntax.SynPat rhsPat -FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia get_trivia() -FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia trivia -FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.Text.Range get_range() -FSharp.Compiler.Syntax.SynPat+Cons: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynPat+Const: FSharp.Compiler.Syntax.SynConst constant FSharp.Compiler.Syntax.SynPat+Const: FSharp.Compiler.Syntax.SynConst get_constant() FSharp.Compiler.Syntax.SynPat+Const: FSharp.Compiler.Text.Range get_range() @@ -8012,6 +8004,14 @@ FSharp.Compiler.Syntax.SynPat+IsInst: FSharp.Compiler.Syntax.SynType get_pat() FSharp.Compiler.Syntax.SynPat+IsInst: FSharp.Compiler.Syntax.SynType pat FSharp.Compiler.Syntax.SynPat+IsInst: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynPat+IsInst: FSharp.Compiler.Text.Range range +FSharp.Compiler.Syntax.SynPat+ListCons: FSharp.Compiler.Syntax.SynPat get_lhsPat() +FSharp.Compiler.Syntax.SynPat+ListCons: FSharp.Compiler.Syntax.SynPat get_rhsPat() +FSharp.Compiler.Syntax.SynPat+ListCons: FSharp.Compiler.Syntax.SynPat lhsPat +FSharp.Compiler.Syntax.SynPat+ListCons: FSharp.Compiler.Syntax.SynPat rhsPat +FSharp.Compiler.Syntax.SynPat+ListCons: FSharp.Compiler.SyntaxTrivia.SynPatListConsTrivia get_trivia() +FSharp.Compiler.Syntax.SynPat+ListCons: FSharp.Compiler.SyntaxTrivia.SynPatListConsTrivia trivia +FSharp.Compiler.Syntax.SynPat+ListCons: FSharp.Compiler.Text.Range get_range() +FSharp.Compiler.Syntax.SynPat+ListCons: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynPat+LongIdent: FSharp.Compiler.Syntax.SynArgPats argPats FSharp.Compiler.Syntax.SynPat+LongIdent: FSharp.Compiler.Syntax.SynArgPats get_argPats() FSharp.Compiler.Syntax.SynPat+LongIdent: FSharp.Compiler.Syntax.SynLongIdent get_longDotId() @@ -8062,12 +8062,12 @@ FSharp.Compiler.Syntax.SynPat+Tags: Int32 Ands FSharp.Compiler.Syntax.SynPat+Tags: Int32 ArrayOrList FSharp.Compiler.Syntax.SynPat+Tags: Int32 As FSharp.Compiler.Syntax.SynPat+Tags: Int32 Attrib -FSharp.Compiler.Syntax.SynPat+Tags: Int32 Cons FSharp.Compiler.Syntax.SynPat+Tags: Int32 Const FSharp.Compiler.Syntax.SynPat+Tags: Int32 DeprecatedCharRange FSharp.Compiler.Syntax.SynPat+Tags: Int32 FromParseError FSharp.Compiler.Syntax.SynPat+Tags: Int32 InstanceMember FSharp.Compiler.Syntax.SynPat+Tags: Int32 IsInst +FSharp.Compiler.Syntax.SynPat+Tags: Int32 ListCons FSharp.Compiler.Syntax.SynPat+Tags: Int32 LongIdent FSharp.Compiler.Syntax.SynPat+Tags: Int32 Named FSharp.Compiler.Syntax.SynPat+Tags: Int32 Null @@ -8097,12 +8097,12 @@ FSharp.Compiler.Syntax.SynPat: Boolean IsAnds FSharp.Compiler.Syntax.SynPat: Boolean IsArrayOrList FSharp.Compiler.Syntax.SynPat: Boolean IsAs FSharp.Compiler.Syntax.SynPat: Boolean IsAttrib -FSharp.Compiler.Syntax.SynPat: Boolean IsCons FSharp.Compiler.Syntax.SynPat: Boolean IsConst FSharp.Compiler.Syntax.SynPat: Boolean IsDeprecatedCharRange FSharp.Compiler.Syntax.SynPat: Boolean IsFromParseError FSharp.Compiler.Syntax.SynPat: Boolean IsInstanceMember FSharp.Compiler.Syntax.SynPat: Boolean IsIsInst +FSharp.Compiler.Syntax.SynPat: Boolean IsListCons FSharp.Compiler.Syntax.SynPat: Boolean IsLongIdent FSharp.Compiler.Syntax.SynPat: Boolean IsNamed FSharp.Compiler.Syntax.SynPat: Boolean IsNull @@ -8118,12 +8118,12 @@ FSharp.Compiler.Syntax.SynPat: Boolean get_IsAnds() FSharp.Compiler.Syntax.SynPat: Boolean get_IsArrayOrList() FSharp.Compiler.Syntax.SynPat: Boolean get_IsAs() FSharp.Compiler.Syntax.SynPat: Boolean get_IsAttrib() -FSharp.Compiler.Syntax.SynPat: Boolean get_IsCons() FSharp.Compiler.Syntax.SynPat: Boolean get_IsConst() FSharp.Compiler.Syntax.SynPat: Boolean get_IsDeprecatedCharRange() FSharp.Compiler.Syntax.SynPat: Boolean get_IsFromParseError() FSharp.Compiler.Syntax.SynPat: Boolean get_IsInstanceMember() FSharp.Compiler.Syntax.SynPat: Boolean get_IsIsInst() +FSharp.Compiler.Syntax.SynPat: Boolean get_IsListCons() FSharp.Compiler.Syntax.SynPat: Boolean get_IsLongIdent() FSharp.Compiler.Syntax.SynPat: Boolean get_IsNamed() FSharp.Compiler.Syntax.SynPat: Boolean get_IsNull() @@ -8139,12 +8139,12 @@ FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewAnds(Microsoft.F FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewArrayOrList(Boolean, Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynPat], FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewAs(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewAttrib(FSharp.Compiler.Syntax.SynPat, Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList], FSharp.Compiler.Text.Range) -FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewCons(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewConst(FSharp.Compiler.Syntax.SynConst, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewDeprecatedCharRange(Char, Char, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewFromParseError(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewInstanceMember(FSharp.Compiler.Syntax.Ident, FSharp.Compiler.Syntax.Ident, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewIsInst(FSharp.Compiler.Syntax.SynType, FSharp.Compiler.Text.Range) +FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewListCons(FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Syntax.SynPat, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynPatListConsTrivia) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewLongIdent(FSharp.Compiler.Syntax.SynLongIdent, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynValTyparDecls], FSharp.Compiler.Syntax.SynArgPats, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewNamed(FSharp.Compiler.Syntax.SynIdent, Boolean, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat NewNull(FSharp.Compiler.Text.Range) @@ -8160,12 +8160,12 @@ FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+Ands FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+ArrayOrList FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+As FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+Attrib -FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+Cons FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+Const FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+DeprecatedCharRange FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+FromParseError FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+InstanceMember FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+IsInst +FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+ListCons FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+LongIdent FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+Named FSharp.Compiler.Syntax.SynPat: FSharp.Compiler.Syntax.SynPat+Null @@ -9569,11 +9569,11 @@ FSharp.Compiler.SyntaxTrivia.SynModuleSigDeclNestedModuleTrivia: Microsoft.FShar FSharp.Compiler.SyntaxTrivia.SynModuleSigDeclNestedModuleTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_ModuleKeyword() FSharp.Compiler.SyntaxTrivia.SynModuleSigDeclNestedModuleTrivia: System.String ToString() FSharp.Compiler.SyntaxTrivia.SynModuleSigDeclNestedModuleTrivia: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range]) -FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia -FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia: FSharp.Compiler.Text.Range ColonColonRange -FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia: FSharp.Compiler.Text.Range get_ColonColonRange() -FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia: System.String ToString() -FSharp.Compiler.SyntaxTrivia.SynPatConsTrivia: Void .ctor(FSharp.Compiler.Text.Range) +FSharp.Compiler.SyntaxTrivia.SynPatListConsTrivia +FSharp.Compiler.SyntaxTrivia.SynPatListConsTrivia: FSharp.Compiler.Text.Range ColonColonRange +FSharp.Compiler.SyntaxTrivia.SynPatListConsTrivia: FSharp.Compiler.Text.Range get_ColonColonRange() +FSharp.Compiler.SyntaxTrivia.SynPatListConsTrivia: System.String ToString() +FSharp.Compiler.SyntaxTrivia.SynPatListConsTrivia: Void .ctor(FSharp.Compiler.Text.Range) FSharp.Compiler.SyntaxTrivia.SynPatOrTrivia FSharp.Compiler.SyntaxTrivia.SynPatOrTrivia: FSharp.Compiler.Text.Range BarRange FSharp.Compiler.SyntaxTrivia.SynPatOrTrivia: FSharp.Compiler.Text.Range get_BarRange() diff --git a/tests/service/SyntaxTreeTests/PatternTests.fs b/tests/service/SyntaxTreeTests/PatternTests.fs index 53907a0805e..c03325e6077 100644 --- a/tests/service/SyntaxTreeTests/PatternTests.fs +++ b/tests/service/SyntaxTreeTests/PatternTests.fs @@ -73,7 +73,7 @@ let (head::tail) = [ 1;2;4] match parseResults with | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [ SynModuleDecl.Let( - bindings = [ SynBinding(headPat = SynPat.Paren(pat = SynPat.Cons(trivia = trivia))) ] + bindings = [ SynBinding(headPat = SynPat.Paren(pat = SynPat.ListCons(trivia = trivia))) ] ) ]) ])) -> assertRange (2,9) (2,11) trivia.ColonColonRange @@ -92,7 +92,7 @@ match x with | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [ SynModuleDecl.Expr( expr = SynExpr.Match(clauses = [ - SynMatchClause(pat = SynPat.Cons(trivia = trivia)) + SynMatchClause(pat = SynPat.ListCons(trivia = trivia)) ]) ) ]) ])) -> @@ -134,7 +134,7 @@ let 1 :: _ = [ 4; 5; 6 ] match parseResults with | ParsedInput.ImplFile(ParsedImplFileInput(contents = [ SynModuleOrNamespace(decls = [ SynModuleDecl.Let(bindings = [ SynBinding(headPat = - SynPat.Cons(trivia = trivia)) ]) + SynPat.ListCons(trivia = trivia)) ]) ]) ])) -> assertRange (2,6) (2, 8) trivia.ColonColonRange | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"