about summary refs log tree commit diff
path: root/compiler/rustc_lint/src/late.rs
diff options
context:
space:
mode:
authorScott McMurray <scottmcm@users.noreply.github.com>2023-06-15 00:02:26 -0700
committerScott McMurray <scottmcm@users.noreply.github.com>2023-06-15 09:57:47 -0700
commit44789b626b7b03cd57edab04fd6ebaafe349e954 (patch)
tree52790375f2ce5653ae4a68723c751e081a626939 /compiler/rustc_lint/src/late.rs
parent314c39d2ea07d8b50649149358ebeb1a6bd09179 (diff)
downloadrust-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.rs11
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);
+            })
         })
     }