@@ -4446,6 +4446,16 @@ declExpr:
4446
4446
SynExpr.Typed($2, ty, unionRanges $2.Range m)
4447
4447
SynExpr.YieldOrReturn(($1, not $1), expr, (unionRanges (rhs parseState 1) expr.Range), trivia) }
4448
4448
4449
+ | YIELD recover
4450
+ { let mYieldAll = rhs parseState 1
4451
+ let trivia: SynExprYieldOrReturnTrivia = { YieldOrReturnKeyword = rhs parseState 1 }
4452
+ SynExpr.YieldOrReturn(($1, not $1), arbExpr ("yield", mYieldAll), mYieldAll, trivia) }
4453
+
4454
+ | YIELD_BANG recover
4455
+ { let mYieldAll = rhs parseState 1
4456
+ let trivia: SynExprYieldOrReturnFromTrivia = { YieldOrReturnFromKeyword = rhs parseState 1 }
4457
+ SynExpr.YieldOrReturnFrom(($1, not $1), arbExpr ("yield!", mYieldAll), mYieldAll, trivia) }
4458
+
4449
4459
| YIELD_BANG declExpr COLON typ
4450
4460
{ let trivia: SynExprYieldOrReturnFromTrivia = { YieldOrReturnFromKeyword = rhs parseState 1 }
4451
4461
let typedExpr = SynExpr.Typed($2, $4, unionRanges $2.Range $4.Range)
@@ -4461,20 +4471,6 @@ declExpr:
4461
4471
SynExpr.Typed($2, ty, unionRanges $2.Range m)
4462
4472
SynExpr.YieldOrReturnFrom(($1, not $1), expr, (unionRanges (rhs parseState 1) $2.Range), trivia) }
4463
4473
4464
- | YIELD_BANG declExpr
4465
- { let trivia: SynExprYieldOrReturnFromTrivia = { YieldOrReturnFromKeyword = rhs parseState 1 }
4466
- SynExpr.YieldOrReturnFrom(($1, not $1), $2, (unionRanges (rhs parseState 1) $2.Range), trivia) }
4467
-
4468
- | YIELD recover
4469
- { let mYieldAll = rhs parseState 1
4470
- let trivia: SynExprYieldOrReturnTrivia = { YieldOrReturnKeyword = rhs parseState 1 }
4471
- SynExpr.YieldOrReturn(($1, not $1), arbExpr ("yield", mYieldAll), mYieldAll, trivia) }
4472
-
4473
- | YIELD_BANG recover
4474
- { let mYieldAll = rhs parseState 1
4475
- let trivia: SynExprYieldOrReturnFromTrivia = { YieldOrReturnFromKeyword = rhs parseState 1 }
4476
- SynExpr.YieldOrReturnFrom(($1, not $1), arbExpr ("yield!", mYieldAll), mYieldAll, trivia) }
4477
-
4478
4474
| BINDER headBindingPattern EQUALS typedSequentialExprBlock IN opt_OBLOCKSEP moreBinders typedSequentialExprBlock %prec expr_let
4479
4475
{ (* This rule handles the 'use!' and 'let!' binding expressions in computation expressions *)
4480
4476
(* The BINDER token represents keywords like 'use!' or 'let!' *)
0 commit comments