Fix a stack overflow with long else if chains
This commit is contained in:
parent
d06ca0ffaf
commit
1e87ef66f4
2 changed files with 4 additions and 2 deletions
|
@ -22,6 +22,7 @@ use rustc_ast::{AnonConst, BinOp, BinOpKind, FnDecl, FnRetTy, MacCall, Param, Ty
|
|||
use rustc_ast::{Arm, Async, BlockCheckMode, Expr, ExprKind, Label, Movability, RangeLimits};
|
||||
use rustc_ast::{ClosureBinder, MetaItemLit, StmtKind};
|
||||
use rustc_ast_pretty::pprust;
|
||||
use rustc_data_structures::stack::ensure_sufficient_stack;
|
||||
use rustc_errors::{
|
||||
AddToDiagnostic, Applicability, Diagnostic, DiagnosticBuilder, ErrorGuaranteed, IntoDiagnostic,
|
||||
PResult, StashKey,
|
||||
|
@ -2489,7 +2490,7 @@ impl<'a> Parser<'a> {
|
|||
let else_span = self.prev_token.span; // `else`
|
||||
let attrs = self.parse_outer_attributes()?; // For recovery.
|
||||
let expr = if self.eat_keyword(kw::If) {
|
||||
self.parse_expr_if()?
|
||||
ensure_sufficient_stack(|| self.parse_expr_if())?
|
||||
} else if self.check(&TokenKind::OpenDelim(Delimiter::Brace)) {
|
||||
self.parse_simple_block()?
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue