From 174a20ac7f332b1a594f5a93e5032c3f902b5fc3 Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Mon, 10 Apr 2023 14:13:52 +0200 Subject: [PATCH 1/2] Parser: recover on missing types in typed expressions --- src/Compiler/pars.fsy | 28 ++++++++++++++++--- .../data/SyntaxTree/Expression/Downcast 01.fs | 3 ++ .../SyntaxTree/Expression/Downcast 01.fs.bsl | 16 +++++++++++ .../data/SyntaxTree/Expression/Downcast 02.fs | 4 +++ .../SyntaxTree/Expression/Downcast 02.fs.bsl | 13 +++++++++ .../data/SyntaxTree/Expression/Downcast 03.fs | 4 +++ .../SyntaxTree/Expression/Downcast 03.fs.bsl | 14 ++++++++++ .../SyntaxTree/Expression/Type test 01.fs | 3 ++ .../SyntaxTree/Expression/Type test 01.fs.bsl | 15 ++++++++++ .../SyntaxTree/Expression/Type test 02.fs | 4 +++ .../SyntaxTree/Expression/Type test 02.fs.bsl | 15 ++++++++++ .../SyntaxTree/Expression/Type test 03.fs | 4 +++ .../SyntaxTree/Expression/Type test 03.fs.bsl | 15 ++++++++++ .../SyntaxTree/Expression/Type test 04.fs | 3 ++ .../SyntaxTree/Expression/Type test 04.fs.bsl | 21 ++++++++++++++ .../data/SyntaxTree/Expression/Typed 01.fs | 4 +++ .../SyntaxTree/Expression/Typed 01.fs.bsl | 11 ++++++++ .../data/SyntaxTree/Expression/Typed 02.fs | 4 +++ .../SyntaxTree/Expression/Typed 02.fs.bsl | 11 ++++++++ .../data/SyntaxTree/Expression/Typed 03.fs | 5 ++++ .../SyntaxTree/Expression/Typed 03.fs.bsl | 15 ++++++++++ .../data/SyntaxTree/Expression/Typed 04.fs | 4 +++ .../SyntaxTree/Expression/Typed 04.fs.bsl | 15 ++++++++++ .../data/SyntaxTree/Expression/Upcast 01.fs | 3 ++ .../SyntaxTree/Expression/Upcast 01.fs.bsl | 15 ++++++++++ .../data/SyntaxTree/Expression/Upcast 02.fs | 4 +++ .../SyntaxTree/Expression/Upcast 02.fs.bsl | 12 ++++++++ .../data/SyntaxTree/Expression/Upcast 03.fs | 4 +++ .../SyntaxTree/Expression/Upcast 03.fs.bsl | 13 +++++++++ .../data/SyntaxTree/Expression/Upcast 04.fs | 5 ++++ .../SyntaxTree/Expression/Upcast 04.fs.bsl | 16 +++++++++++ .../data/SyntaxTree/Expression/Upcast 05.fs | 5 ++++ .../SyntaxTree/Expression/Upcast 05.fs.bsl | 17 +++++++++++ 33 files changed, 321 insertions(+), 4 deletions(-) create mode 100644 tests/service/data/SyntaxTree/Expression/Downcast 01.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Downcast 01.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Downcast 02.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Downcast 02.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Downcast 03.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Downcast 03.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Type test 01.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Type test 01.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Type test 02.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Type test 02.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Type test 03.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Type test 03.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Type test 04.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Type test 04.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Typed 01.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Typed 01.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Typed 02.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Typed 02.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Typed 03.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Typed 03.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Typed 04.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Typed 04.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Upcast 01.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Upcast 01.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Upcast 02.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Upcast 02.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Upcast 03.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Upcast 03.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Upcast 04.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Upcast 04.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Expression/Upcast 05.fs create mode 100644 tests/service/data/SyntaxTree/Expression/Upcast 05.fs.bsl diff --git a/src/Compiler/pars.fsy b/src/Compiler/pars.fsy index f6c1dc1ad6d..111d35a9ef8 100644 --- a/src/Compiler/pars.fsy +++ b/src/Compiler/pars.fsy @@ -3448,9 +3448,14 @@ typedSequentialExprBlockR: | recover { fun mStart -> arbExpr ("typedSequentialExprBlockR", mStart) } -typedSequentialExpr: +typedSequentialExpr: | sequentialExpr COLON typeWithTypeConstraints - { SynExpr.Typed ($1, $3, unionRanges $1.Range $3.Range) } + { SynExpr.Typed ($1, $3, unionRanges $1.Range $3.Range) } + + | sequentialExpr COLON recover + { let mColon = rhs parseState 2 + let ty = SynType.FromParseError(mColon.EndRange) + SynExpr.Typed ($1, ty, unionRanges $1.Range mColon) } | sequentialExpr { $1 } @@ -3879,14 +3884,29 @@ declExpr: SynExpr.YieldOrReturn ((true, true), expr, (unionRanges mArrow expr.Range)) } | declExpr COLON_QMARK typ - { SynExpr.TypeTest ($1, $3, unionRanges $1.Range $3.Range) } + { SynExpr.TypeTest($1, $3, unionRanges $1.Range $3.Range) } + + | declExpr COLON_QMARK recover + { let mColon = rhs parseState 2 + let ty = SynType.FromParseError(mColon.EndRange) + SynExpr.TypeTest($1, ty, unionRanges $1.Range mColon) } | declExpr COLON_GREATER typ - { SynExpr.Upcast ($1, $3, unionRanges $1.Range $3.Range) } + { SynExpr.Upcast($1, $3, unionRanges $1.Range $3.Range) } + + | declExpr COLON_GREATER recover + { let mOp = rhs parseState 2 + let ty = SynType.FromParseError(mOp.EndRange) + SynExpr.Upcast($1, ty, unionRanges $1.Range mOp) } | declExpr COLON_QMARK_GREATER typ { SynExpr.Downcast ($1, $3, unionRanges $1.Range $3.Range) } + | declExpr COLON_QMARK_GREATER recover + { let mOp = rhs parseState 2 + let ty = SynType.FromParseError(mOp.EndRange) + SynExpr.Downcast($1, ty, unionRanges $1.Range mOp) } + | declExpr COLON_EQUALS declExpr { mkSynInfix (rhs parseState 2) $1 ":=" $3 } diff --git a/tests/service/data/SyntaxTree/Expression/Downcast 01.fs b/tests/service/data/SyntaxTree/Expression/Downcast 01.fs new file mode 100644 index 00000000000..d312f51add9 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Downcast 01.fs @@ -0,0 +1,3 @@ +module Module + +i :?> diff --git a/tests/service/data/SyntaxTree/Expression/Downcast 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Downcast 01.fs.bsl new file mode 100644 index 00000000000..0180c738f8b --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Downcast 01.fs.bsl @@ -0,0 +1,16 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Downcast 01.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Downcast (Ident i, FromParseError (3,5--3,5), (3,0--3,5)), + (3,0--3,5))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--3,5), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(4,0)-(4,0) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(4,0)-(4,0) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/Downcast 02.fs b/tests/service/data/SyntaxTree/Expression/Downcast 02.fs new file mode 100644 index 00000000000..62e9a079a9f --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Downcast 02.fs @@ -0,0 +1,4 @@ +module Module + +i :?> +() \ No newline at end of file diff --git a/tests/service/data/SyntaxTree/Expression/Downcast 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Downcast 02.fs.bsl new file mode 100644 index 00000000000..d9a03af749d --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Downcast 02.fs.bsl @@ -0,0 +1,13 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Downcast 02.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr (Downcast (Ident i, Anon (4,0--4,2), (3,0--4,2)), (3,0--4,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(4,1)-(4,2) parse error Unexpected symbol ')' in expression diff --git a/tests/service/data/SyntaxTree/Expression/Downcast 03.fs b/tests/service/data/SyntaxTree/Expression/Downcast 03.fs new file mode 100644 index 00000000000..126c2b98532 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Downcast 03.fs @@ -0,0 +1,4 @@ +module Module + +i :?> +i \ No newline at end of file diff --git a/tests/service/data/SyntaxTree/Expression/Downcast 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/Downcast 03.fs.bsl new file mode 100644 index 00000000000..fab179734b2 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Downcast 03.fs.bsl @@ -0,0 +1,14 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Downcast 03.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Downcast + (Ident i, LongIdent (SynLongIdent ([i], [], [None])), (3,0--4,1)), + (3,0--4,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Type test 01.fs b/tests/service/data/SyntaxTree/Expression/Type test 01.fs new file mode 100644 index 00000000000..900a99d9418 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Type test 01.fs @@ -0,0 +1,3 @@ +module Module + +i :? diff --git a/tests/service/data/SyntaxTree/Expression/Type test 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Type test 01.fs.bsl new file mode 100644 index 00000000000..7e404d712a8 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Type test 01.fs.bsl @@ -0,0 +1,15 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Type test 01.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (TypeTest (Ident i, FromParseError (3,4--3,4), (3,0--3,4)), + (3,0--3,4))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--3,4), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(4,0)-(4,0) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/Type test 02.fs b/tests/service/data/SyntaxTree/Expression/Type test 02.fs new file mode 100644 index 00000000000..12ca5adc8a6 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Type test 02.fs @@ -0,0 +1,4 @@ +module Module + +i :? +() diff --git a/tests/service/data/SyntaxTree/Expression/Type test 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Type test 02.fs.bsl new file mode 100644 index 00000000000..a0c458e845c --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Type test 02.fs.bsl @@ -0,0 +1,15 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Type test 02.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (TypeTest (Ident i, FromParseError (3,4--3,4), (3,0--3,4)), + (3,0--3,4)); Expr (Const (Unit, (4,0--4,2)), (4,0--4,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(3,5)-(4,0) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/Type test 03.fs b/tests/service/data/SyntaxTree/Expression/Type test 03.fs new file mode 100644 index 00000000000..0ffea29262d --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Type test 03.fs @@ -0,0 +1,4 @@ +module Module + +i :? +i diff --git a/tests/service/data/SyntaxTree/Expression/Type test 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/Type test 03.fs.bsl new file mode 100644 index 00000000000..4189996253d --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Type test 03.fs.bsl @@ -0,0 +1,15 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Type test 03.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (TypeTest (Ident i, FromParseError (3,4--3,4), (3,0--3,4)), + (3,0--3,4)); Expr (Ident i, (4,0--4,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(3,5)-(4,0) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/Type test 04.fs b/tests/service/data/SyntaxTree/Expression/Type test 04.fs new file mode 100644 index 00000000000..f8e0b607d90 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Type test 04.fs @@ -0,0 +1,3 @@ +module Module + +if i :? then () diff --git a/tests/service/data/SyntaxTree/Expression/Type test 04.fs.bsl b/tests/service/data/SyntaxTree/Expression/Type test 04.fs.bsl new file mode 100644 index 00000000000..ab70a127c9c --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Type test 04.fs.bsl @@ -0,0 +1,21 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Type test 04.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (IfThenElse + (TypeTest (Ident i, FromParseError (3,7--3,7), (3,3--3,7)), + Const (Unit, (3,13--3,15)), None, Yes (3,0--3,12), false, + (3,0--3,15), { IfKeyword = (3,0--3,2) + IsElif = false + ThenKeyword = (3,8--3,12) + ElseKeyword = None + IfToThenRange = (3,0--3,12) }), (3,0--3,15))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--3,15), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(3,8)-(3,12) parse error Unexpected keyword 'then' in expression diff --git a/tests/service/data/SyntaxTree/Expression/Typed 01.fs b/tests/service/data/SyntaxTree/Expression/Typed 01.fs new file mode 100644 index 00000000000..79bc075044a --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Typed 01.fs @@ -0,0 +1,4 @@ +module Module + +i: +() diff --git a/tests/service/data/SyntaxTree/Expression/Typed 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Typed 01.fs.bsl new file mode 100644 index 00000000000..126033bd3a0 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Typed 01.fs.bsl @@ -0,0 +1,11 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Typed 01.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, [Expr (Ident i, (3,0--3,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--3,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(3,1)-(3,2) parse error Unexpected symbol ':' in definition. Expected incomplete structured construct at or before this point or other token. diff --git a/tests/service/data/SyntaxTree/Expression/Typed 02.fs b/tests/service/data/SyntaxTree/Expression/Typed 02.fs new file mode 100644 index 00000000000..ebbf8ede589 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Typed 02.fs @@ -0,0 +1,4 @@ +module Module + +i: +i \ No newline at end of file diff --git a/tests/service/data/SyntaxTree/Expression/Typed 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Typed 02.fs.bsl new file mode 100644 index 00000000000..cfca2392376 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Typed 02.fs.bsl @@ -0,0 +1,11 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Typed 02.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, [Expr (Ident i, (3,0--3,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--3,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(3,1)-(3,2) parse error Unexpected symbol ':' in definition. Expected incomplete structured construct at or before this point or other token. diff --git a/tests/service/data/SyntaxTree/Expression/Typed 03.fs b/tests/service/data/SyntaxTree/Expression/Typed 03.fs new file mode 100644 index 00000000000..7b79eb1c772 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Typed 03.fs @@ -0,0 +1,5 @@ +module Module + +do + i: +i \ No newline at end of file diff --git a/tests/service/data/SyntaxTree/Expression/Typed 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/Typed 03.fs.bsl new file mode 100644 index 00000000000..ea133deba4a --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Typed 03.fs.bsl @@ -0,0 +1,15 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Typed 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Do + (Typed (Ident i, FromParseError (4,6--4,6), (4,4--4,6)), + (3,0--4,6)), (3,0--4,6)); Expr (Ident i, (5,0--5,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--5,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(5,0)-(5,1) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/Typed 04.fs b/tests/service/data/SyntaxTree/Expression/Typed 04.fs new file mode 100644 index 00000000000..69d12756205 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Typed 04.fs @@ -0,0 +1,4 @@ +module Module + +do + i: diff --git a/tests/service/data/SyntaxTree/Expression/Typed 04.fs.bsl b/tests/service/data/SyntaxTree/Expression/Typed 04.fs.bsl new file mode 100644 index 00000000000..2bef6b3b004 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Typed 04.fs.bsl @@ -0,0 +1,15 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Typed 04.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Do + (Typed (Ident i, FromParseError (4,6--4,6), (4,4--4,6)), + (3,0--4,6)), (3,0--4,6))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,6), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(5,0)-(5,0) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 01.fs b/tests/service/data/SyntaxTree/Expression/Upcast 01.fs new file mode 100644 index 00000000000..d80beffd475 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Upcast 01.fs @@ -0,0 +1,3 @@ +module Module + +i :> diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Upcast 01.fs.bsl new file mode 100644 index 00000000000..2bc05274db5 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Upcast 01.fs.bsl @@ -0,0 +1,15 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Upcast 01.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Upcast (Ident i, FromParseError (3,4--3,4), (3,0--3,4)), + (3,0--3,4))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--3,4), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(4,0)-(4,0) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(4,0)-(4,0) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 02.fs b/tests/service/data/SyntaxTree/Expression/Upcast 02.fs new file mode 100644 index 00000000000..d8989d94289 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Upcast 02.fs @@ -0,0 +1,4 @@ +module Module + +i :> +() \ No newline at end of file diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Upcast 02.fs.bsl new file mode 100644 index 00000000000..3b979512571 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Upcast 02.fs.bsl @@ -0,0 +1,12 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Upcast 02.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr (Upcast (Ident i, Anon (4,0--4,2), (3,0--4,2)), (3,0--4,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(4,1)-(4,2) parse error Unexpected symbol ')' in expression diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 03.fs b/tests/service/data/SyntaxTree/Expression/Upcast 03.fs new file mode 100644 index 00000000000..6fc7301cc37 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Upcast 03.fs @@ -0,0 +1,4 @@ +module Module + +i :> +i \ No newline at end of file diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/Upcast 03.fs.bsl new file mode 100644 index 00000000000..174f880184b --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Upcast 03.fs.bsl @@ -0,0 +1,13 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Upcast 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Upcast + (Ident i, LongIdent (SynLongIdent ([i], [], [None])), (3,0--4,1)), + (3,0--4,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 04.fs b/tests/service/data/SyntaxTree/Expression/Upcast 04.fs new file mode 100644 index 00000000000..81d1d30016b --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Upcast 04.fs @@ -0,0 +1,5 @@ +module Module + +do + i :> +() \ No newline at end of file diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 04.fs.bsl b/tests/service/data/SyntaxTree/Expression/Upcast 04.fs.bsl new file mode 100644 index 00000000000..2d6d2c730c7 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Upcast 04.fs.bsl @@ -0,0 +1,16 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Upcast 04.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Do (Upcast (Ident i, Anon (5,0--5,2), (4,4--5,2)), (3,0--5,2)), + (3,0--5,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--5,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(5,0)-(5,1) parse warning Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,1) parse warning Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(5,1)-(5,2) parse error Unexpected symbol ')' in expression diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 05.fs b/tests/service/data/SyntaxTree/Expression/Upcast 05.fs new file mode 100644 index 00000000000..f1b8a402ad5 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Upcast 05.fs @@ -0,0 +1,5 @@ +module Module + +do + i :> +i \ No newline at end of file diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 05.fs.bsl b/tests/service/data/SyntaxTree/Expression/Upcast 05.fs.bsl new file mode 100644 index 00000000000..2b2e97051b6 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Upcast 05.fs.bsl @@ -0,0 +1,17 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Upcast 05.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Do + (Upcast + (Ident i, LongIdent (SynLongIdent ([i], [], [None])), + (4,4--5,1)), (3,0--5,1)), (3,0--5,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--5,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(5,0)-(5,1) parse warning Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,1) parse warning Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. From e90ec1737025ef7e997fc3e264a725e3f7027aab Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Mon, 10 Apr 2023 14:18:14 +0200 Subject: [PATCH 2/2] New lines --- tests/service/data/SyntaxTree/Expression/Downcast 02.fs | 2 +- tests/service/data/SyntaxTree/Expression/Downcast 03.fs | 2 +- tests/service/data/SyntaxTree/Expression/Typed 02.fs | 2 +- tests/service/data/SyntaxTree/Expression/Typed 03.fs | 2 +- tests/service/data/SyntaxTree/Expression/Upcast 02.fs | 2 +- tests/service/data/SyntaxTree/Expression/Upcast 03.fs | 2 +- tests/service/data/SyntaxTree/Expression/Upcast 04.fs | 2 +- tests/service/data/SyntaxTree/Expression/Upcast 05.fs | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/service/data/SyntaxTree/Expression/Downcast 02.fs b/tests/service/data/SyntaxTree/Expression/Downcast 02.fs index 62e9a079a9f..05352ac4a37 100644 --- a/tests/service/data/SyntaxTree/Expression/Downcast 02.fs +++ b/tests/service/data/SyntaxTree/Expression/Downcast 02.fs @@ -1,4 +1,4 @@ module Module i :?> -() \ No newline at end of file +() diff --git a/tests/service/data/SyntaxTree/Expression/Downcast 03.fs b/tests/service/data/SyntaxTree/Expression/Downcast 03.fs index 126c2b98532..a96d2cca3a7 100644 --- a/tests/service/data/SyntaxTree/Expression/Downcast 03.fs +++ b/tests/service/data/SyntaxTree/Expression/Downcast 03.fs @@ -1,4 +1,4 @@ module Module i :?> -i \ No newline at end of file +i diff --git a/tests/service/data/SyntaxTree/Expression/Typed 02.fs b/tests/service/data/SyntaxTree/Expression/Typed 02.fs index ebbf8ede589..9081fa0bc38 100644 --- a/tests/service/data/SyntaxTree/Expression/Typed 02.fs +++ b/tests/service/data/SyntaxTree/Expression/Typed 02.fs @@ -1,4 +1,4 @@ module Module i: -i \ No newline at end of file +i diff --git a/tests/service/data/SyntaxTree/Expression/Typed 03.fs b/tests/service/data/SyntaxTree/Expression/Typed 03.fs index 7b79eb1c772..1cea7c33500 100644 --- a/tests/service/data/SyntaxTree/Expression/Typed 03.fs +++ b/tests/service/data/SyntaxTree/Expression/Typed 03.fs @@ -2,4 +2,4 @@ module Module do i: -i \ No newline at end of file +i diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 02.fs b/tests/service/data/SyntaxTree/Expression/Upcast 02.fs index d8989d94289..67e5b2c5f90 100644 --- a/tests/service/data/SyntaxTree/Expression/Upcast 02.fs +++ b/tests/service/data/SyntaxTree/Expression/Upcast 02.fs @@ -1,4 +1,4 @@ module Module i :> -() \ No newline at end of file +() diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 03.fs b/tests/service/data/SyntaxTree/Expression/Upcast 03.fs index 6fc7301cc37..0fff34dd8b2 100644 --- a/tests/service/data/SyntaxTree/Expression/Upcast 03.fs +++ b/tests/service/data/SyntaxTree/Expression/Upcast 03.fs @@ -1,4 +1,4 @@ module Module i :> -i \ No newline at end of file +i diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 04.fs b/tests/service/data/SyntaxTree/Expression/Upcast 04.fs index 81d1d30016b..0b096da29ba 100644 --- a/tests/service/data/SyntaxTree/Expression/Upcast 04.fs +++ b/tests/service/data/SyntaxTree/Expression/Upcast 04.fs @@ -2,4 +2,4 @@ module Module do i :> -() \ No newline at end of file +() diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 05.fs b/tests/service/data/SyntaxTree/Expression/Upcast 05.fs index f1b8a402ad5..b7c8227f8fc 100644 --- a/tests/service/data/SyntaxTree/Expression/Upcast 05.fs +++ b/tests/service/data/SyntaxTree/Expression/Upcast 05.fs @@ -2,4 +2,4 @@ module Module do i :> -i \ No newline at end of file +i