about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark Rousskov <mark.simulacrum@gmail.com>2019-10-07 17:36:44 -0400
committerMark Rousskov <mark.simulacrum@gmail.com>2019-10-17 19:16:41 -0400
commit68c07db80a90fd0fc3be03474555dc685864bcb6 (patch)
tree8e4550fed6b6d3b6b5f4ce6edba1ef246546007e
parente1079c82be514c6a9423acefd4457a7a08c0091c (diff)
downloadrust-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.rs4
-rw-r--r--src/librustc_interface/passes.rs2
-rw-r--r--src/librustc_lint/lib.rs7
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,