diff options
| author | Kan-Ru Chen <kanru@kanru.info> | 2020-07-25 18:57:35 +0900 |
|---|---|---|
| committer | Kan-Ru Chen <kanru@kanru.info> | 2020-07-25 18:58:18 +0900 |
| commit | 0e2ec8ca832f4a2e54f9eaf2a285cf4c11628014 (patch) | |
| tree | cc628b784fe39150ee02e34626afad6ab6dab6a3 | |
| parent | 304aca409d95b0563f4552d01328e6dc35581890 (diff) | |
| download | rust-0e2ec8ca832f4a2e54f9eaf2a285cf4c11628014.tar.gz rust-0e2ec8ca832f4a2e54f9eaf2a285cf4c11628014.zip | |
Ensure stack when parsing large if expressions
| -rw-r--r-- | src/librustc_expand/expand.rs | 3 |
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 } }); |
