diff options
| author | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-10-07 17:36:44 -0400 |
|---|---|---|
| committer | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-10-17 19:16:41 -0400 |
| commit | 68c07db80a90fd0fc3be03474555dc685864bcb6 (patch) | |
| tree | 8e4550fed6b6d3b6b5f4ce6edba1ef246546007e | |
| parent | e1079c82be514c6a9423acefd4457a7a08c0091c (diff) | |
| download | rust-68c07db80a90fd0fc3be03474555dc685864bcb6.tar.gz rust-68c07db80a90fd0fc3be03474555dc685864bcb6.zip | |
No longer implicitly register lints when registering passes
This is in preparation for on-demand constructing passes
| -rw-r--r-- | src/librustc/lint/context.rs | 4 | ||||
| -rw-r--r-- | src/librustc_interface/passes.rs | 2 | ||||
| -rw-r--r-- | 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 ff0b5a9e25b..e04845d278a 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 4e879e508ab..951b0970754 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 49ab34b830a..3bb7de8b7f6 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, |
