Skip to content

Commit 748da1d

Browse files
committed
Auto merge of rust-lang#132666 - dingxiangfei2009:skip-if-let-rescope-lint, r=<try>
Skip `if-let-rescope` lint unless requested by migration Tracked by rust-lang#124085 Related to rust-lang#131984 (comment) Given that `if-let-rescope` is a lint to be enabled globally by an edition migration, there is no point in extracting the precise lint level on the HIR expression. This mitigates the performance regression discovered by the earlier perf-run. cc `@Kobzol` `@rylev` `@traviscross` I propose a `rust-timer` run to measure how much performance that we can recover from the mitigation. 🙇
2 parents bc5cf99 + 193fe5a commit 748da1d

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

Diff for: compiler/rustc_lint/src/if_let_rescope.rs

+5-6
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use rustc_errors::{
99
use rustc_hir::{self as hir, HirIdSet};
1010
use rustc_macros::LintDiagnostic;
1111
use rustc_middle::ty::TyCtxt;
12-
use rustc_session::lint::{FutureIncompatibilityReason, Level};
12+
use rustc_session::lint::{FutureIncompatibilityReason, LintId};
1313
use rustc_session::{declare_lint, impl_lint_pass};
1414
use rustc_span::Span;
1515
use rustc_span::edition::Edition;
@@ -242,12 +242,12 @@ impl_lint_pass!(
242242

243243
impl<'tcx> LateLintPass<'tcx> for IfLetRescope {
244244
fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx hir::Expr<'tcx>) {
245-
if expr.span.edition().at_least_rust_2024() {
246-
return;
247-
}
248-
if let (Level::Allow, _) = cx.tcx.lint_level_at_node(IF_LET_RESCOPE, expr.hir_id) {
245+
if expr.span.edition().at_least_rust_2024()
246+
|| cx.tcx.lints_that_dont_need_to_run(()).contains(&LintId::of(IF_LET_RESCOPE))
247+
{
249248
return;
250249
}
250+
251251
if let hir::ExprKind::Loop(block, _label, hir::LoopSource::While, _span) = expr.kind
252252
&& let Some(value) = block.expr
253253
&& let hir::ExprKind::If(cond, _conseq, _alt) = value.kind
@@ -287,7 +287,6 @@ struct IfLetRescopeLint {
287287
rewrite: Option<IfLetRescopeRewrite>,
288288
}
289289

290-
// #[derive(Subdiagnostic)]
291290
struct IfLetRescopeRewrite {
292291
match_heads: Vec<SingleArmMatchBegin>,
293292
consequent_heads: Vec<ConsequentRewrite>,

0 commit comments

Comments
 (0)