about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorKan-Ru Chen <kanru@kanru.info>2020-07-25 18:57:35 +0900
committerKan-Ru Chen <kanru@kanru.info>2020-07-25 18:58:18 +0900
commit0e2ec8ca832f4a2e54f9eaf2a285cf4c11628014 (patch)
treecc628b784fe39150ee02e34626afad6ab6dab6a3 /src
parent304aca409d95b0563f4552d01328e6dc35581890 (diff)
downloadrust-0e2ec8ca832f4a2e54f9eaf2a285cf4c11628014.tar.gz
rust-0e2ec8ca832f4a2e54f9eaf2a285cf4c11628014.zip
Ensure stack when parsing large if expressions
Diffstat (limited to 'src')
-rw-r--r--src/librustc_expand/expand.rs3
1 files changed, 2 insertions, 1 deletions
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
             }
         });