diff options
| author | Scott McMurray <scottmcm@users.noreply.github.com> | 2023-06-15 00:02:26 -0700 |
|---|---|---|
| committer | Scott McMurray <scottmcm@users.noreply.github.com> | 2023-06-15 09:57:47 -0700 |
| commit | 44789b626b7b03cd57edab04fd6ebaafe349e954 (patch) | |
| tree | 52790375f2ce5653ae4a68723c751e081a626939 /compiler/rustc_lint/src/late.rs | |
| parent | 314c39d2ea07d8b50649149358ebeb1a6bd09179 (diff) | |
| download | rust-44789b626b7b03cd57edab04fd6ebaafe349e954.tar.gz rust-44789b626b7b03cd57edab04fd6ebaafe349e954.zip | |
Add an `ensure_sufficient_stack` to `LateContextAndPass::visit_expr`
This is apparently where it's busting stack, and the comments for `ensure_sufficient_stack` say that > E.g. almost any call to visit_expr or equivalent can benefit from this.
Diffstat (limited to 'compiler/rustc_lint/src/late.rs')
| -rw-r--r-- | compiler/rustc_lint/src/late.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/compiler/rustc_lint/src/late.rs b/compiler/rustc_lint/src/late.rs index 8a4a451f8a8..fb12ded71d6 100644 --- a/compiler/rustc_lint/src/late.rs +++ b/compiler/rustc_lint/src/late.rs @@ -16,6 +16,7 @@ use crate::{passes::LateLintPassObject, LateContext, LateLintPass, LintStore}; use rustc_ast as ast; +use rustc_data_structures::stack::ensure_sufficient_stack; use rustc_data_structures::sync::{join, DynSend}; use rustc_hir as hir; use rustc_hir::def_id::LocalDefId; @@ -157,10 +158,12 @@ impl<'tcx, T: LateLintPass<'tcx>> hir_visit::Visitor<'tcx> for LateContextAndPas } fn visit_expr(&mut self, e: &'tcx hir::Expr<'tcx>) { - self.with_lint_attrs(e.hir_id, |cx| { - lint_callback!(cx, check_expr, e); - hir_visit::walk_expr(cx, e); - lint_callback!(cx, check_expr_post, e); + ensure_sufficient_stack(|| { + self.with_lint_attrs(e.hir_id, |cx| { + lint_callback!(cx, check_expr, e); + hir_visit::walk_expr(cx, e); + lint_callback!(cx, check_expr_post, e); + }) }) } |
