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.
This commit is contained in:
parent
314c39d2ea
commit
44789b626b
@ -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);
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user