未验证 提交 57ebc9a3 编写于 作者: E Eugene Auduchinok 提交者: GitHub

Parser: recover unfinished match clause at eof

上级 c7277a85
......@@ -4083,7 +4083,7 @@ patternClauses:
fun _mBar ->
(SynMatchClause(pat, guard, arbExpr ("patternClauses1", m.EndRange), m, DebugPointAtTarget.Yes, SynMatchClauseTrivia.Zero) :: clauses), mLast }
| patternAndGuard patternResult BAR error
| patternAndGuard patternResult BAR recover
{ let pat, guard = $1
let mArrow, resultExpr = $2
let mLast = rhs parseState 3
......@@ -4091,14 +4091,14 @@ patternClauses:
fun mBar ->
[SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar })], mLast }
| patternAndGuard patternResult error
| patternAndGuard patternResult recover
{ let pat, guard = $1
let mArrow, resultExpr = $2
let m = unionRanges resultExpr.Range pat.Range
fun mBar ->
[SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar })], m }
| patternAndGuard error
| patternAndGuard recover
{ let pat, guard = $1
let patm = pat.Range
let m = guard |> Option.map (fun e -> unionRanges patm e.Range) |> Option.defaultValue patm
......
......@@ -468,3 +468,16 @@ let (1,1,1) = ()
[ p12; p13; p21; p23; p31; p32; p43; p51; p62 ] |> List.iter assertIsEmptyRange
| _ -> failwith "Unexpected tree"
[<Test>]
let ``Match - Clause 01`` () =
let parseResults = getParseResults """
match () with
| _ -> ()
| _,
"""
let exprs = getSingleExprInModule parseResults
match exprs with
| SynExpr.Match(_, _, [_; _], _, _) -> ()
| _ -> failwith "Unexpected tree"
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册