Skip to content

Commit 67cfe2c

Browse files
committed
Remove -Zno-interleave-lints.
Because it complicates lint implementation greatly.
1 parent 33faf01 commit 67cfe2c

File tree

12 files changed

+36
-194
lines changed

12 files changed

+36
-194
lines changed

compiler/rustc_driver/src/lib.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -245,10 +245,8 @@ fn run_compiler(
245245
interface::run_compiler(config, |compiler| {
246246
let sopts = &compiler.session().opts;
247247
if sopts.describe_lints {
248-
let mut lint_store = rustc_lint::new_lint_store(
249-
sopts.unstable_opts.no_interleave_lints,
250-
compiler.session().enable_internal_lints(),
251-
);
248+
let mut lint_store =
249+
rustc_lint::new_lint_store(compiler.session().enable_internal_lints());
252250
let registered_lints =
253251
if let Some(register_lints) = compiler.register_lints() {
254252
register_lints(compiler.session(), &mut lint_store);

compiler/rustc_interface/src/passes.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -207,10 +207,7 @@ pub fn register_plugins<'a>(
207207
});
208208
}
209209

210-
let mut lint_store = rustc_lint::new_lint_store(
211-
sess.opts.unstable_opts.no_interleave_lints,
212-
sess.enable_internal_lints(),
213-
);
210+
let mut lint_store = rustc_lint::new_lint_store(sess.enable_internal_lints());
214211
register_lints(sess, &mut lint_store);
215212

216213
let registrars =

compiler/rustc_interface/src/tests.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,6 @@ fn test_unstable_options_tracking_hash() {
666666
untracked!(mir_pretty_relative_line_numbers, true);
667667
untracked!(nll_facts, true);
668668
untracked!(no_analysis, true);
669-
untracked!(no_interleave_lints, true);
670669
untracked!(no_leak_check, true);
671670
untracked!(no_parallel_llvm, true);
672671
untracked!(parse_only, true);

compiler/rustc_lint/src/early.rs

Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ use rustc_session::Session;
2525
use rustc_span::symbol::Ident;
2626
use rustc_span::Span;
2727

28-
use std::slice;
29-
3028
macro_rules! run_early_pass { ($cx:expr, $f:ident, $($args:expr),*) => ({
3129
$cx.pass.$f(&$cx.context, $($args),*);
3230
}) }
@@ -403,43 +401,26 @@ pub fn check_ast_node<'a>(
403401
let mut passes: Vec<_> = passes.iter().map(|p| (p)()).collect();
404402
let mut buffered = lint_buffer.unwrap_or_default();
405403

406-
if sess.opts.unstable_opts.no_interleave_lints {
407-
for (i, pass) in passes.iter_mut().enumerate() {
408-
buffered =
409-
sess.prof.verbose_generic_activity_with_arg("run_lint", pass.name()).run(|| {
410-
early_lint_node(
411-
sess,
412-
!pre_expansion && i == 0,
413-
lint_store,
414-
registered_tools,
415-
buffered,
416-
EarlyLintPassObjects { lints: slice::from_mut(pass) },
417-
check_node,
418-
)
419-
});
420-
}
421-
} else {
404+
buffered = early_lint_node(
405+
sess,
406+
!pre_expansion,
407+
lint_store,
408+
registered_tools,
409+
buffered,
410+
builtin_lints,
411+
check_node,
412+
);
413+
414+
if !passes.is_empty() {
422415
buffered = early_lint_node(
423416
sess,
424-
!pre_expansion,
417+
false,
425418
lint_store,
426419
registered_tools,
427420
buffered,
428-
builtin_lints,
421+
EarlyLintPassObjects { lints: &mut passes[..] },
429422
check_node,
430423
);
431-
432-
if !passes.is_empty() {
433-
buffered = early_lint_node(
434-
sess,
435-
false,
436-
lint_store,
437-
registered_tools,
438-
buffered,
439-
EarlyLintPassObjects { lints: &mut passes[..] },
440-
check_node,
441-
);
442-
}
443424
}
444425

445426
// All of the buffered lints should have been emitted at this point.

compiler/rustc_lint/src/late.rs

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ use rustc_span::Span;
2828

2929
use std::any::Any;
3030
use std::cell::Cell;
31-
use std::slice;
3231

3332
/// Extract the `LintStore` from the query context.
3433
/// This function exists because we've erased `LintStore` as `dyn Any` in the context.
@@ -364,11 +363,6 @@ pub fn late_lint_mod<'tcx, T: LateLintPass<'tcx>>(
364363
module_def_id: LocalDefId,
365364
builtin_lints: T,
366365
) {
367-
if tcx.sess.opts.unstable_opts.no_interleave_lints {
368-
// These passes runs in late_lint_crate with -Z no_interleave_lints
369-
return;
370-
}
371-
372366
late_lint_mod_pass(tcx, module_def_id, builtin_lints);
373367

374368
let mut passes: Vec<_> =
@@ -411,33 +405,11 @@ fn late_lint_crate<'tcx, T: LateLintPass<'tcx>>(tcx: TyCtxt<'tcx>, builtin_lints
411405
let mut passes =
412406
unerased_lint_store(tcx).late_passes.iter().map(|p| (p)(tcx)).collect::<Vec<_>>();
413407

414-
if !tcx.sess.opts.unstable_opts.no_interleave_lints {
415-
if !passes.is_empty() {
416-
late_lint_pass_crate(tcx, LateLintPassObjects { lints: &mut passes[..] });
417-
}
418-
419-
late_lint_pass_crate(tcx, builtin_lints);
420-
} else {
421-
for pass in &mut passes {
422-
tcx.sess.prof.verbose_generic_activity_with_arg("run_late_lint", pass.name()).run(
423-
|| {
424-
late_lint_pass_crate(tcx, LateLintPassObjects { lints: slice::from_mut(pass) });
425-
},
426-
);
427-
}
428-
429-
let mut passes: Vec<_> =
430-
unerased_lint_store(tcx).late_module_passes.iter().map(|pass| (pass)(tcx)).collect();
431-
432-
for pass in &mut passes {
433-
tcx.sess
434-
.prof
435-
.verbose_generic_activity_with_arg("run_late_module_lint", pass.name())
436-
.run(|| {
437-
late_lint_pass_crate(tcx, LateLintPassObjects { lints: slice::from_mut(pass) });
438-
});
439-
}
408+
if !passes.is_empty() {
409+
late_lint_pass_crate(tcx, LateLintPassObjects { lints: &mut passes[..] });
440410
}
411+
412+
late_lint_pass_crate(tcx, builtin_lints);
441413
}
442414

443415
/// Performs lint checking on a crate.

compiler/rustc_lint/src/lib.rs

Lines changed: 7 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -249,10 +249,10 @@ late_lint_passes!(declare_combined_late_pass, [pub BuiltinCombinedLateLintPass])
249249

250250
late_lint_mod_passes!(declare_combined_late_pass, [BuiltinCombinedModuleLateLintPass]);
251251

252-
pub fn new_lint_store(no_interleave_lints: bool, internal_lints: bool) -> LintStore {
252+
pub fn new_lint_store(internal_lints: bool) -> LintStore {
253253
let mut lint_store = LintStore::new();
254254

255-
register_builtins(&mut lint_store, no_interleave_lints);
255+
register_builtins(&mut lint_store);
256256
if internal_lints {
257257
register_internals(&mut lint_store);
258258
}
@@ -263,54 +263,17 @@ pub fn new_lint_store(no_interleave_lints: bool, internal_lints: bool) -> LintSt
263263
/// Tell the `LintStore` about all the built-in lints (the ones
264264
/// defined in this crate and the ones defined in
265265
/// `rustc_session::lint::builtin`).
266-
fn register_builtins(store: &mut LintStore, no_interleave_lints: bool) {
266+
fn register_builtins(store: &mut LintStore) {
267267
macro_rules! add_lint_group {
268268
($name:expr, $($lint:ident),*) => (
269269
store.register_group(false, $name, None, vec![$(LintId::of($lint)),*]);
270270
)
271271
}
272272

273-
macro_rules! register_early_pass {
274-
($method:ident, $ty:ident, $constructor:expr) => {
275-
store.register_lints(&$ty::get_lints());
276-
store.$method(|| Box::new($constructor));
277-
};
278-
}
279-
280-
macro_rules! register_late_pass {
281-
($method:ident, $ty:ident, $constructor:expr) => {
282-
store.register_lints(&$ty::get_lints());
283-
store.$method(|_| Box::new($constructor));
284-
};
285-
}
286-
287-
macro_rules! register_early_passes {
288-
($method:ident, [$($passes:ident: $constructor:expr,)*]) => (
289-
$(
290-
register_early_pass!($method, $passes, $constructor);
291-
)*
292-
)
293-
}
294-
295-
macro_rules! register_late_passes {
296-
($method:ident, [$($passes:ident: $constructor:expr,)*]) => (
297-
$(
298-
register_late_pass!($method, $passes, $constructor);
299-
)*
300-
)
301-
}
302-
303-
if no_interleave_lints {
304-
pre_expansion_lint_passes!(register_early_passes, register_pre_expansion_pass);
305-
early_lint_passes!(register_early_passes, register_early_pass);
306-
late_lint_passes!(register_late_passes, register_late_pass);
307-
late_lint_mod_passes!(register_late_passes, register_late_mod_pass);
308-
} else {
309-
store.register_lints(&BuiltinCombinedPreExpansionLintPass::get_lints());
310-
store.register_lints(&BuiltinCombinedEarlyLintPass::get_lints());
311-
store.register_lints(&BuiltinCombinedModuleLateLintPass::get_lints());
312-
store.register_lints(&BuiltinCombinedLateLintPass::get_lints());
313-
}
273+
store.register_lints(&BuiltinCombinedPreExpansionLintPass::get_lints());
274+
store.register_lints(&BuiltinCombinedEarlyLintPass::get_lints());
275+
store.register_lints(&BuiltinCombinedModuleLateLintPass::get_lints());
276+
store.register_lints(&BuiltinCombinedLateLintPass::get_lints());
314277

315278
add_lint_group!(
316279
"nonstandard_style",

compiler/rustc_session/src/options.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1414,8 +1414,6 @@ options! {
14141414
"run all passes except codegen; no output"),
14151415
no_generate_arange_section: bool = (false, parse_no_flag, [TRACKED],
14161416
"omit DWARF address ranges that give faster lookups"),
1417-
no_interleave_lints: bool = (false, parse_no_flag, [UNTRACKED],
1418-
"execute lints separately; allows benchmarking individual lints"),
14191417
no_leak_check: bool = (false, parse_no_flag, [UNTRACKED],
14201418
"disable the 'leak check' for subtyping; unsound, but useful for tests"),
14211419
no_link: bool = (false, parse_no_flag, [TRACKED],

src/librustdoc/lib.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -781,10 +781,7 @@ fn main_args(at_args: &[String]) -> MainResult {
781781
let sess = compiler.session();
782782

783783
if sess.opts.describe_lints {
784-
let mut lint_store = rustc_lint::new_lint_store(
785-
sess.opts.unstable_opts.no_interleave_lints,
786-
sess.enable_internal_lints(),
787-
);
784+
let mut lint_store = rustc_lint::new_lint_store(sess.enable_internal_lints());
788785
let registered_lints = if let Some(register_lints) = compiler.register_lints() {
789786
register_lints(sess, &mut lint_store);
790787
true

src/test/rustdoc-ui/z-help.stdout

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@
9090
-Z no-analysis=val -- parse and expand the source, but run no analysis
9191
-Z no-codegen=val -- run all passes except codegen; no output
9292
-Z no-generate-arange-section=val -- omit DWARF address ranges that give faster lookups
93-
-Z no-interleave-lints=val -- execute lints separately; allows benchmarking individual lints
9493
-Z no-leak-check=val -- disable the 'leak check' for subtyping; unsound, but useful for tests
9594
-Z no-link=val -- compile without linking
9695
-Z no-parallel-llvm=val -- run LLVM in non-parallel mode (while keeping codegen-units and ThinLTO)

src/test/ui/lint/issue-97094.nointerleaved.stderr

Lines changed: 0 additions & 53 deletions
This file was deleted.

src/test/ui/lint/issue-97094.rs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,3 @@
1-
// revisions: interleaved nointerleaved
2-
// [nointerleaved]compile-flags: -Z no-interleave-lints
3-
4-
// This test has two revisions because the logic change
5-
// needed to make this test pass had to be adjusted
6-
// for no-interleave-lints. Should the debug option
7-
// be removed one day, please don't remove this
8-
// test entirely, just remove the revision from it.
9-
101
#![deny(warnings)]
112

123
// Ensure that unknown lints inside cfg-attr's are linted for

src/test/ui/lint/issue-97094.interleaved.stderr renamed to src/test/ui/lint/issue-97094.stderr

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,50 @@
11
error: unknown lint: `nonex_lint_top_level`
2-
--> $DIR/issue-97094.rs:14:26
2+
--> $DIR/issue-97094.rs:5:26
33
|
44
LL | #![cfg_attr(all(), allow(nonex_lint_top_level))]
55
| ^^^^^^^^^^^^^^^^^^^^
66
|
77
note: the lint level is defined here
8-
--> $DIR/issue-97094.rs:10:9
8+
--> $DIR/issue-97094.rs:1:9
99
|
1010
LL | #![deny(warnings)]
1111
| ^^^^^^^^
1212
= note: `#[deny(unknown_lints)]` implied by `#[deny(warnings)]`
1313

1414
error: lint `bare_trait_object` has been renamed to `bare_trait_objects`
15-
--> $DIR/issue-97094.rs:16:26
15+
--> $DIR/issue-97094.rs:7:26
1616
|
1717
LL | #![cfg_attr(all(), allow(bare_trait_object))]
1818
| ^^^^^^^^^^^^^^^^^ help: use the new name: `bare_trait_objects`
1919
|
2020
= note: `#[deny(renamed_and_removed_lints)]` implied by `#[deny(warnings)]`
2121

2222
error: unknown lint: `nonex_lint_mod`
23-
--> $DIR/issue-97094.rs:19:25
23+
--> $DIR/issue-97094.rs:10:25
2424
|
2525
LL | #[cfg_attr(all(), allow(nonex_lint_mod))]
2626
| ^^^^^^^^^^^^^^
2727

2828
error: unknown lint: `nonex_lint_mod_inner`
29-
--> $DIR/issue-97094.rs:22:30
29+
--> $DIR/issue-97094.rs:13:30
3030
|
3131
LL | #![cfg_attr(all(), allow(nonex_lint_mod_inner))]
3232
| ^^^^^^^^^^^^^^^^^^^^
3333

3434
error: unknown lint: `nonex_lint_fn`
35-
--> $DIR/issue-97094.rs:26:25
35+
--> $DIR/issue-97094.rs:17:25
3636
|
3737
LL | #[cfg_attr(all(), allow(nonex_lint_fn))]
3838
| ^^^^^^^^^^^^^
3939

4040
error: unknown lint: `nonex_lint_in_macro`
41-
--> $DIR/issue-97094.rs:37:29
41+
--> $DIR/issue-97094.rs:28:29
4242
|
4343
LL | #[cfg_attr(all(), allow(nonex_lint_in_macro))]
4444
| ^^^^^^^^^^^^^^^^^^^
4545

4646
error: unknown lint: `nonex_lint_fn`
47-
--> $DIR/issue-97094.rs:56:13
47+
--> $DIR/issue-97094.rs:47:13
4848
|
4949
LL | #[allow(nonex_lint_fn)]
5050
| ^^^^^^^^^^^^^

0 commit comments

Comments
 (0)