diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2023-11-17 13:22:06 +1100 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2023-11-18 07:39:15 +1100 |
| commit | 446c8e06d9480ac195077aa82d94759ed8eb637d (patch) | |
| tree | 818fe66a757a26ef4b4b34c2431afd8059c15251 /compiler/rustc_driver_impl/src | |
| parent | 8aee35e2ed51a9f782c1bff3f8a165b5a85f0c43 (diff) | |
| download | rust-446c8e06d9480ac195077aa82d94759ed8eb637d.tar.gz rust-446c8e06d9480ac195077aa82d94759ed8eb637d.zip | |
Move `describe_lints` calls.
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 #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.
Diffstat (limited to 'compiler/rustc_driver_impl/src')
| -rw-r--r-- | compiler/rustc_driver_impl/src/lib.rs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/compiler/rustc_driver_impl/src/lib.rs b/compiler/rustc_driver_impl/src/lib.rs index f74eb028364..9c1a5d50230 100644 --- a/compiler/rustc_driver_impl/src/lib.rs +++ b/compiler/rustc_driver_impl/src/lib.rs @@ -362,13 +362,18 @@ fn run_compiler( interface::run_compiler(config, |compiler| { let sess = compiler.session(); let codegen_backend = compiler.codegen_backend(); + + // 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(sess); - return sess.compile_status(); - } let should_stop = print_crate_info(&handler, codegen_backend, sess, false); if should_stop == Compilation::Continue { handler.early_error("no input filename given") @@ -419,11 +424,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(())); |
