diff options
| author | flip1995 <hello@philkrones.com> | 2020-10-07 15:35:21 +0200 |
|---|---|---|
| committer | flip1995 <philipp.krones@embecosm.com> | 2020-11-24 10:37:15 +0100 |
| commit | 4daa263e0b1073667046d33fba712ad49f7931be (patch) | |
| tree | de73bd801c81a4c191fc0b95c9304ecea9910a14 /compiler/rustc_driver/src | |
| parent | be1e502cef3bb756c388c0b4f8d4bba73458e2b0 (diff) | |
| download | rust-4daa263e0b1073667046d33fba712ad49f7931be.tar.gz rust-4daa263e0b1073667046d33fba712ad49f7931be.zip | |
Always print lints from plugins, if they're available
Currently you can get a list of lints and lint groups by running `rustc -Whelp`. This prints an additional line at the end: ``` Compiler plugins can provide additional lints and lint groups. To see a listing of these, re-run `rustc -W help` with a crate filename. ``` Clippy is such a "compiler plugin", that provides additional lints. Running `clippy-driver -Whelp` (`rustc` wrapper) still only prints the rustc lints with the above message at the end. But when running `clippy-driver -Whelp main.rs`, where `main.rs` is any rust file, it also prints Clippy lints. I don't think this is a good approach from a UX perspective: Why is a random file necessary to print a help message? This commit changes this behavior: Whenever a compiler callback registers lints, it is assumed that these lints come from a plugin and are printed without having to specify a Rust source file.
Diffstat (limited to 'compiler/rustc_driver/src')
| -rw-r--r-- | compiler/rustc_driver/src/lib.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/compiler/rustc_driver/src/lib.rs b/compiler/rustc_driver/src/lib.rs index e49e456792b..014007fc13b 100644 --- a/compiler/rustc_driver/src/lib.rs +++ b/compiler/rustc_driver/src/lib.rs @@ -248,11 +248,18 @@ fn run_compiler( interface::run_compiler(config, |compiler| { let sopts = &compiler.session().opts; if sopts.describe_lints { - let lint_store = rustc_lint::new_lint_store( + let mut lint_store = rustc_lint::new_lint_store( sopts.debugging_opts.no_interleave_lints, compiler.session().unstable_options(), ); - describe_lints(compiler.session(), &lint_store, false); + let registered_lints = + if let Some(register_lints) = compiler.register_lints() { + register_lints(compiler.session(), &mut lint_store); + true + } else { + false + }; + describe_lints(compiler.session(), &lint_store, registered_lints); return; } let should_stop = RustcDefaultCalls::print_crate_info( |
