diff options
| author | Urgau <urgau@numericable.fr> | 2025-03-30 15:56:41 +0200 |
|---|---|---|
| committer | Urgau <urgau@numericable.fr> | 2025-04-01 18:29:39 +0200 |
| commit | df18de57a540cc9ae2309fd53e49c9a627f7d849 (patch) | |
| tree | f3f9dbe6dc7acde95211abd9518f7fbd954e9162 /compiler/rustc_driver_impl/src | |
| parent | 69cb0a9e15393bf9dea483725a2cfdba74dff47d (diff) | |
| download | rust-df18de57a540cc9ae2309fd53e49c9a627f7d849.tar.gz rust-df18de57a540cc9ae2309fd53e49c9a627f7d849.zip | |
Add unstable `--print=crate-root-lint-levels`
Diffstat (limited to 'compiler/rustc_driver_impl/src')
| -rw-r--r-- | compiler/rustc_driver_impl/src/lib.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/compiler/rustc_driver_impl/src/lib.rs b/compiler/rustc_driver_impl/src/lib.rs index 37755e7d61d..f1dc4bb795e 100644 --- a/compiler/rustc_driver_impl/src/lib.rs +++ b/compiler/rustc_driver_impl/src/lib.rs @@ -691,6 +691,34 @@ fn print_crate_info( }; println_info!("{}", passes::get_crate_name(sess, attrs)); } + CrateRootLintLevels => { + let Some(attrs) = attrs.as_ref() else { + // no crate attributes, print out an error and exit + return Compilation::Continue; + }; + let crate_name = passes::get_crate_name(sess, attrs); + let lint_store = crate::unerased_lint_store(sess); + let registered_tools = rustc_resolve::registered_tools_ast(sess.dcx(), attrs); + let features = rustc_expand::config::features(sess, attrs, crate_name); + let lint_levels = rustc_lint::LintLevelsBuilder::crate_root( + sess, + &features, + true, + lint_store, + ®istered_tools, + attrs, + ); + for lint in lint_store.get_lints() { + if let Some(feature_symbol) = lint.feature_gate + && !features.enabled(feature_symbol) + { + // lint is unstable and feature gate isn't active, don't print + continue; + } + let level = lint_levels.lint_level(lint).0; + println_info!("{}={}", lint.name_lower(), level.as_str()); + } + } Cfg => { let mut cfgs = sess .psess |
