Skip to content

Commit 951e697

Browse files
committed
WIP
1 parent 9d3200c commit 951e697

File tree

3 files changed

+18
-24
lines changed

3 files changed

+18
-24
lines changed

compiler/rustc_interface/src/passes.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ fn pre_expansion_lint<'a>(
9090
registered_tools,
9191
None,
9292
rustc_lint::BuiltinCombinedPreExpansionLintPass::new(),
93+
None::<rustc_lint::BuiltinCombinedPreExpansionLintPass>,
9394
check_node,
9495
);
9596
},
@@ -442,6 +443,7 @@ fn early_lint_checks(tcx: TyCtxt<'_>, (): ()) {
442443
tcx.registered_tools(()),
443444
Some(lint_buffer),
444445
rustc_lint::BuiltinCombinedEarlyLintPass::new(),
446+
Some(rustc_lint::BuiltinCombinedEarlyLintPassMustRun::new()),
445447
(&**krate, &*krate.attrs),
446448
)
447449
}

compiler/rustc_lint/src/early.rs

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,16 @@
77
use rustc_ast::ptr::P;
88
use rustc_ast::visit::{self as ast_visit, Visitor, walk_list};
99
use rustc_ast::{self as ast, HasAttrs};
10-
use rustc_data_structures::fx::FxHashSet;
1110
use rustc_data_structures::stack::ensure_sufficient_stack;
1211
use rustc_feature::Features;
13-
use rustc_hir::{HirId, ItemLocalId, OwnerId};
14-
use rustc_middle::hir;
15-
use rustc_middle::lint::LintLevelSource;
1612
use rustc_middle::ty::{RegisteredTools, TyCtxt};
1713
use rustc_session::lint::{BufferedEarlyLint, LintBuffer, LintPass};
1814
use rustc_session::{Session, lint};
19-
use rustc_span::def_id::CRATE_DEF_ID;
2015
use rustc_span::{Ident, Span};
2116
use tracing::debug;
2217

23-
use crate::builtin::UnsafeCode;
2418
use crate::context::{EarlyContext, LintContext, LintStore};
2519
use crate::passes::{EarlyLintPass, EarlyLintPassObject};
26-
use crate::{Level, LintId};
2720

2821
pub(super) mod diagnostics;
2922

@@ -326,6 +319,7 @@ pub fn check_ast_node<'a>(
326319
registered_tools: &RegisteredTools,
327320
lint_buffer: Option<LintBuffer>,
328321
builtin_lints: impl EarlyLintPass + 'static,
322+
builtin_lints_2: Option<impl EarlyLintPass + 'static>,
329323
check_node: impl EarlyCheckNode<'a>,
330324
) {
331325
let context = EarlyContext::new(
@@ -345,23 +339,8 @@ pub fn check_ast_node<'a>(
345339
if passes.is_empty() {
346340
if let Some(tcx) = tcx {
347341
if sess.opts.lint_cap.is_some_and(|cap| cap == lint::Allow) {
348-
let lints_that_must_run = builtin_lints
349-
.get_lints()
350-
.into_iter()
351-
.filter(|lint| {
352-
let has_future_breakage = lint
353-
.future_incompatible
354-
.is_some_and(|fut| fut.reason.has_future_breakage());
355-
has_future_breakage || lint.eval_always
356-
})
357-
.collect::<Vec<_>>();
358-
eprintln!(
359-
"LINT: must_run: {}, total: {}",
360-
lints_that_must_run.len(),
361-
builtin_lints.get_lints().len()
362-
);
363-
if !lints_that_must_run.is_empty() {
364-
check_ast_node_inner(sess, Some(tcx), check_node, context, UnsafeCode);
342+
if let Some(builtin_lints_2) = builtin_lints_2 {
343+
check_ast_node_inner(sess, Some(tcx), check_node, context, builtin_lints_2);
365344
return;
366345
}
367346
}

compiler/rustc_lint/src/lib.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,19 @@ early_lint_methods!(
186186
]
187187
);
188188

189+
early_lint_methods!(
190+
declare_combined_early_lint_pass,
191+
[
192+
pub BuiltinCombinedEarlyLintPassMustRun,
193+
[
194+
UnsafeCode: UnsafeCode,
195+
AnonymousParameters: AnonymousParameters,
196+
EllipsisInclusiveRangePatterns: EllipsisInclusiveRangePatterns::default(),
197+
Expr2024: Expr2024,
198+
]
199+
]
200+
);
201+
189202
late_lint_methods!(
190203
declare_combined_late_lint_pass,
191204
[

0 commit comments

Comments
 (0)