From 68c07db80a90fd0fc3be03474555dc685864bcb6 Mon Sep 17 00:00:00 2001 From: Mark Rousskov Date: Mon, 7 Oct 2019 17:36:44 -0400 Subject: [PATCH] No longer implicitly register lints when registering passes This is in preparation for on-demand constructing passes --- src/librustc/lint/context.rs | 4 ---- src/librustc_interface/passes.rs | 2 ++ src/librustc_lint/lib.rs | 7 ++++++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/librustc/lint/context.rs b/src/librustc/lint/context.rs index ff0b5a9e25b7..e04845d278a5 100644 --- a/src/librustc/lint/context.rs +++ b/src/librustc/lint/context.rs @@ -169,22 +169,18 @@ impl LintStore { } pub fn register_early_pass(&mut self, pass: EarlyLintPassObject) { - self.register_lints(&pass.get_lints()); self.early_passes.as_mut().unwrap().push(pass); } pub fn register_pre_expansion_pass(&mut self, pass: EarlyLintPassObject) { - self.register_lints(&pass.get_lints()); self.pre_expansion_passes.as_mut().unwrap().push(pass); } pub fn register_late_pass(&mut self, pass: LateLintPassObject) { - self.register_lints(&pass.get_lints()); self.late_passes.lock().as_mut().unwrap().push(pass); } pub fn register_late_mod_pass(&mut self, pass: LateLintPassObject) { - self.register_lints(&pass.get_lints()); self.late_module_passes.push(pass); } diff --git a/src/librustc_interface/passes.rs b/src/librustc_interface/passes.rs index 4e879e508ab4..951b0970754a 100644 --- a/src/librustc_interface/passes.rs +++ b/src/librustc_interface/passes.rs @@ -299,9 +299,11 @@ pub fn register_plugins<'a>( let mut ls = sess.lint_store.borrow_mut(); for pass in early_lint_passes { + ls.register_lints(&pass.get_lints()); ls.register_early_pass(pass); } for pass in late_lint_passes { + ls.register_lints(&pass.get_lints()); ls.register_late_pass(pass); } diff --git a/src/librustc_lint/lib.rs b/src/librustc_lint/lib.rs index 49ab34b830a9..3bb7de8b7f61 100644 --- a/src/librustc_lint/lib.rs +++ b/src/librustc_lint/lib.rs @@ -205,7 +205,9 @@ pub fn register_builtins(store: &mut lint::LintStore, no_interleave_lints: bool) macro_rules! register_pass { ($method:ident, $constructor:expr) => ( - store.$method(box $constructor); + let obj = box $constructor; + store.register_lints(&obj.get_lints()); + store.$method(obj); ) } @@ -484,8 +486,11 @@ pub fn register_builtins(store: &mut lint::LintStore, no_interleave_lints: bool) } pub fn register_internals(store: &mut lint::LintStore) { + store.register_lints(&DefaultHashTypes::new().get_lints()); store.register_early_pass(box DefaultHashTypes::new()); + store.register_lints(&LintPassImpl.get_lints()); store.register_early_pass(box LintPassImpl); + store.register_lints(&TyTyKind.get_lints()); store.register_late_pass(box TyTyKind); store.register_group( false,