Skip to content

Commit

Permalink
Move describe_lints calls.
Browse files Browse the repository at this point in the history
Currently we have an inconsistency between the "input" and "no input"
cases:
- no input: `rustc --print=sysroot -Whelp` prints the lint help.
- input:    `rustc --print=sysroot -Whelp a.rs` prints the sysroot.

It makes sense to print the lint help in both cases, because that's what
happens with `--help`/`-Zhelp`/`-Chelp`.

In fact, the `describe_lints` in the "input" case happens amazingly
late, after *parsing*. This is because, with plugins, lints used to be
registered much later, when the global context was created. But rust-lang#117649
moved lint registration much earlier, during session construction.

So this commit moves the `describe_lints` call to a single spot for both
for both the "input" and "no input" cases, as early as possible. This is
still not as early as `--help`/`-Zhelp`/`-Chelp`, because `-Whelp` must
wait until the session is constructed.
  • Loading branch information
nnethercote committed Nov 17, 2023
1 parent f9274d8 commit 4838843
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions compiler/rustc_driver_impl/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -361,13 +361,18 @@ fn run_compiler(

interface::run_compiler(config, |compiler| {
let sess = compiler.session();

// This implements `-Whelp`. It should be handled very early, like
// `--help`/`-Zhelp`/`-Chelp`. This is the earliest it can run, because
// it must happen after lints are registered, during session creation.
if sess.opts.describe_lints {
describe_lints(sess);
return sess.compile_status();
}

let handler = EarlyErrorHandler::new(sess.opts.error_format);

if !has_input {
if sess.opts.describe_lints {
describe_lints(compiler.session());
return sess.compile_status();
}
let should_stop = print_crate_info(
&handler,
&**compiler.codegen_backend(),
Expand Down Expand Up @@ -425,11 +430,6 @@ fn run_compiler(
return early_exit();
}

if sess.opts.describe_lints {
describe_lints(sess);
return early_exit();
}

// Make sure name resolution and macro expansion is run.
queries.global_ctxt()?.enter(|tcx| tcx.resolver_for_lowering(()));

Expand Down

0 comments on commit 4838843

Please sign in to comment.