Remove registered_lints field from Session
It only exists to pass some information from one part of the driver to another part. We can directly pass this information to the function that needs it to reduce the amount of mutation of the Session.
This commit is contained in:
parent
ead78fdfdf
commit
981f625ba7
4 changed files with 8 additions and 9 deletions
|
@ -350,6 +350,8 @@ fn run_compiler(
|
||||||
|
|
||||||
callbacks.config(&mut config);
|
callbacks.config(&mut config);
|
||||||
|
|
||||||
|
let registered_lints = config.register_lints.is_some();
|
||||||
|
|
||||||
interface::run_compiler(config, |compiler| {
|
interface::run_compiler(config, |compiler| {
|
||||||
let sess = &compiler.sess;
|
let sess = &compiler.sess;
|
||||||
let codegen_backend = &*compiler.codegen_backend;
|
let codegen_backend = &*compiler.codegen_backend;
|
||||||
|
@ -365,7 +367,7 @@ fn run_compiler(
|
||||||
// `--help`/`-Zhelp`/`-Chelp`. This is the earliest it can run, because
|
// `--help`/`-Zhelp`/`-Chelp`. This is the earliest it can run, because
|
||||||
// it must happen after lints are registered, during session creation.
|
// it must happen after lints are registered, during session creation.
|
||||||
if sess.opts.describe_lints {
|
if sess.opts.describe_lints {
|
||||||
describe_lints(sess);
|
describe_lints(sess, registered_lints);
|
||||||
return early_exit();
|
return early_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -982,7 +984,7 @@ the command line flag directly.
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Write to stdout lint command options, together with a list of all available lints
|
/// Write to stdout lint command options, together with a list of all available lints
|
||||||
pub fn describe_lints(sess: &Session) {
|
pub fn describe_lints(sess: &Session, registered_lints: bool) {
|
||||||
safe_println!(
|
safe_println!(
|
||||||
"
|
"
|
||||||
Available lint options:
|
Available lint options:
|
||||||
|
@ -1086,7 +1088,7 @@ Available lint options:
|
||||||
|
|
||||||
print_lint_groups(builtin_groups, true);
|
print_lint_groups(builtin_groups, true);
|
||||||
|
|
||||||
match (sess.registered_lints, loaded.len(), loaded_groups.len()) {
|
match (registered_lints, loaded.len(), loaded_groups.len()) {
|
||||||
(false, 0, _) | (false, _, 0) => {
|
(false, 0, _) | (false, _, 0) => {
|
||||||
safe_println!("Lint tools like Clippy can load additional lints and lint groups.");
|
safe_println!("Lint tools like Clippy can load additional lints and lint groups.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -479,7 +479,6 @@ pub fn run_compiler<R: Send>(config: Config, f: impl FnOnce(&Compiler) -> R + Se
|
||||||
let mut lint_store = rustc_lint::new_lint_store(sess.enable_internal_lints());
|
let mut lint_store = rustc_lint::new_lint_store(sess.enable_internal_lints());
|
||||||
if let Some(register_lints) = config.register_lints.as_deref() {
|
if let Some(register_lints) = config.register_lints.as_deref() {
|
||||||
register_lints(&sess, &mut lint_store);
|
register_lints(&sess, &mut lint_store);
|
||||||
sess.registered_lints = true;
|
|
||||||
}
|
}
|
||||||
sess.lint_store = Some(Lrc::new(lint_store));
|
sess.lint_store = Some(Lrc::new(lint_store));
|
||||||
|
|
||||||
|
|
|
@ -156,9 +156,6 @@ pub struct Session {
|
||||||
/// This only ever stores a `LintStore` but we don't want a dependency on that type here.
|
/// This only ever stores a `LintStore` but we don't want a dependency on that type here.
|
||||||
pub lint_store: Option<Lrc<dyn LintStoreMarker>>,
|
pub lint_store: Option<Lrc<dyn LintStoreMarker>>,
|
||||||
|
|
||||||
/// Should be set if any lints are registered in `lint_store`.
|
|
||||||
pub registered_lints: bool,
|
|
||||||
|
|
||||||
/// Cap lint level specified by a driver specifically.
|
/// Cap lint level specified by a driver specifically.
|
||||||
pub driver_lint_caps: FxHashMap<lint::LintId, lint::Level>,
|
pub driver_lint_caps: FxHashMap<lint::LintId, lint::Level>,
|
||||||
|
|
||||||
|
@ -1068,7 +1065,6 @@ pub fn build_session(
|
||||||
prof,
|
prof,
|
||||||
code_stats: Default::default(),
|
code_stats: Default::default(),
|
||||||
lint_store: None,
|
lint_store: None,
|
||||||
registered_lints: false,
|
|
||||||
driver_lint_caps,
|
driver_lint_caps,
|
||||||
ctfe_backtrace,
|
ctfe_backtrace,
|
||||||
miri_unleashed_features: Lock::new(Default::default()),
|
miri_unleashed_features: Lock::new(Default::default()),
|
||||||
|
|
|
@ -846,11 +846,13 @@ fn main_args(
|
||||||
|
|
||||||
let config = core::create_config(input, options, &render_options, using_internal_features);
|
let config = core::create_config(input, options, &render_options, using_internal_features);
|
||||||
|
|
||||||
|
let registered_lints = config.register_lints.is_some();
|
||||||
|
|
||||||
interface::run_compiler(config, |compiler| {
|
interface::run_compiler(config, |compiler| {
|
||||||
let sess = &compiler.sess;
|
let sess = &compiler.sess;
|
||||||
|
|
||||||
if sess.opts.describe_lints {
|
if sess.opts.describe_lints {
|
||||||
rustc_driver::describe_lints(sess);
|
rustc_driver::describe_lints(sess, registered_lints);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue