@@ -2993,20 +2993,34 @@ and parseTryExpression p =
2993
2993
let loc = mkLoc startPos p.prevEndPos in
2994
2994
Ast_helper.Exp. try_ ~loc expr cases
2995
2995
2996
- and parseIfExpression p =
2997
- Parser. beginRegion p;
2998
- Parser. leaveBreadcrumb p Grammar. ExprIf ;
2999
- let startPos = p.Parser. startPos in
3000
- Parser. expect If p;
2996
+ and parseIfCondition p =
3001
2997
Parser. leaveBreadcrumb p Grammar. IfCondition ;
3002
2998
(* doesn't make sense to try es6 arrow here? *)
3003
2999
let conditionExpr = parseExpr ~context: WhenExpr p in
3004
3000
Parser. eatBreadcrumb p;
3001
+ conditionExpr
3002
+
3003
+ and parseIfBranch p =
3005
3004
Parser. leaveBreadcrumb p IfBranch ;
3006
3005
Parser. expect Lbrace p;
3007
3006
let thenExpr = parseExprBlock p in
3008
3007
Parser. expect Rbrace p;
3009
3008
Parser. eatBreadcrumb p;
3009
+ thenExpr
3010
+
3011
+ and parseElseBranch p =
3012
+ Parser. expect Lbrace p;
3013
+ let blockExpr = parseExprBlock p in
3014
+ Parser. expect Rbrace p;
3015
+ blockExpr;
3016
+
3017
+ and parseIfExpression p =
3018
+ Parser. beginRegion p;
3019
+ Parser. leaveBreadcrumb p Grammar. ExprIf ;
3020
+ let startPos = p.Parser. startPos in
3021
+ Parser. expect If p;
3022
+ let conditionExpr = parseIfCondition p in
3023
+ let thenExpr = parseIfBranch p in
3010
3024
let elseExpr = match p.Parser. token with
3011
3025
| Else ->
3012
3026
Parser. endRegion p;
@@ -3017,10 +3031,7 @@ and parseIfExpression p =
3017
3031
| If ->
3018
3032
parseIfExpression p
3019
3033
| _ ->
3020
- Parser. expect Lbrace p;
3021
- let blockExpr = parseExprBlock p in
3022
- Parser. expect Rbrace p;
3023
- blockExpr
3034
+ parseElseBranch p
3024
3035
in
3025
3036
Parser. eatBreadcrumb p;
3026
3037
Parser. endRegion p;
0 commit comments