Ensure stack when parsing large if expressions

This commit is contained in:
Kan-Ru Chen 2020-07-25 18:57:35 +09:00
parent 304aca409d
commit 0e2ec8ca83

View file

@ -17,6 +17,7 @@ use rustc_ast::visit::{self, AssocCtxt, Visitor};
use rustc_ast_pretty::pprust;
use rustc_attr::{self as attr, is_builtin_attr, HasAttrs};
use rustc_data_structures::map_in_place::MapInPlace;
use rustc_data_structures::stack::ensure_sufficient_stack;
use rustc_errors::{Applicability, PResult};
use rustc_feature::Features;
use rustc_parse::parser::Parser;
@ -1165,7 +1166,7 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
self.check_attributes(&expr.attrs);
self.collect_bang(mac, expr.span, AstFragmentKind::Expr).make_expr().into_inner()
} else {
noop_visit_expr(&mut expr, self);
ensure_sufficient_stack(|| noop_visit_expr(&mut expr, self));
expr
}
});