@@ -2601,8 +2601,6 @@ Result WastParser::ParseBlockInstr(std::unique_ptr<Expr>* out_expr) {
2601
2601
CHECK_RESULT (ParseVar (&var));
2602
2602
expr->delegate_target = var;
2603
2603
expr->kind = TryKind::Delegate;
2604
- } else {
2605
- return ErrorExpected ({" catch" , " catch_all" , " unwind" , " delegate" });
2606
2604
}
2607
2605
CHECK_RESULT (ErrorIfLpar ({" a valid try clause" }));
2608
2606
expr->block .end_loc = GetLocation ();
@@ -2771,32 +2769,33 @@ Result WastParser::ParseExpr(ExprList* exprs) {
2771
2769
EXPECT (Do);
2772
2770
CHECK_RESULT (ParseInstrList (&expr->block .exprs ));
2773
2771
EXPECT (Rpar);
2774
- EXPECT (Lpar);
2775
- TokenType type = Peek ();
2776
- switch (type) {
2777
- case TokenType::Catch:
2778
- case TokenType::CatchAll:
2779
- CHECK_RESULT (ParseCatchExprList (&expr->catches ));
2780
- expr->kind = TryKind::Catch;
2781
- break ;
2782
- case TokenType::Unwind:
2783
- Consume ();
2784
- CHECK_RESULT (ParseTerminatingInstrList (&expr->unwind ));
2785
- expr->kind = TryKind::Unwind;
2786
- EXPECT (Rpar);
2787
- break ;
2788
- case TokenType::Delegate: {
2789
- Consume ();
2790
- Var var;
2791
- CHECK_RESULT (ParseVar (&var));
2792
- expr->delegate_target = var;
2793
- expr->kind = TryKind::Delegate;
2794
- EXPECT (Rpar);
2795
- break ;
2772
+ if (PeekMatch (TokenType::Lpar)) {
2773
+ Consume ();
2774
+ TokenType type = Peek ();
2775
+ switch (type) {
2776
+ case TokenType::Catch:
2777
+ case TokenType::CatchAll:
2778
+ CHECK_RESULT (ParseCatchExprList (&expr->catches ));
2779
+ expr->kind = TryKind::Catch;
2780
+ break ;
2781
+ case TokenType::Unwind:
2782
+ Consume ();
2783
+ CHECK_RESULT (ParseTerminatingInstrList (&expr->unwind ));
2784
+ expr->kind = TryKind::Unwind;
2785
+ EXPECT (Rpar);
2786
+ break ;
2787
+ case TokenType::Delegate: {
2788
+ Consume ();
2789
+ Var var;
2790
+ CHECK_RESULT (ParseVar (&var));
2791
+ expr->delegate_target = var;
2792
+ expr->kind = TryKind::Delegate;
2793
+ EXPECT (Rpar);
2794
+ break ;
2795
+ }
2796
+ default :
2797
+ break ;
2796
2798
}
2797
- default :
2798
- ErrorExpected ({" catch" , " catch_all" , " unwind" , " delegate" });
2799
- break ;
2800
2799
}
2801
2800
CHECK_RESULT (ErrorIfLpar ({" a valid try clause" }));
2802
2801
expr->block .end_loc = GetLocation ();
0 commit comments