From 0e2ec8ca832f4a2e54f9eaf2a285cf4c11628014 Mon Sep 17 00:00:00 2001 From: Kan-Ru Chen Date: Sat, 25 Jul 2020 18:57:35 +0900 Subject: [PATCH] Ensure stack when parsing large if expressions --- src/librustc_expand/expand.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/librustc_expand/expand.rs b/src/librustc_expand/expand.rs index bd7a094c5e3..9dcf74bd712 100644 --- a/src/librustc_expand/expand.rs +++ b/src/librustc_expand/expand.rs @@ -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 } });