about summary refs log tree commit diff
diff options
context:
space:
mode:
authorhyd-dev <yd-huang@outlook.com>2021-03-15 18:24:28 +0800
committerhyd-dev <yd-huang@outlook.com>2021-03-15 18:25:04 +0800
commit176bb6bd38dc73557dc6947077f7239dda7b64ef (patch)
treefa683e58258a59ee0cadea40d320e599afcd4ac0
parentd7ab3c77b3259e25e15d77b6939af4ba8d3be4c0 (diff)
downloadrust-176bb6bd38dc73557dc6947077f7239dda7b64ef.tar.gz
rust-176bb6bd38dc73557dc6947077f7239dda7b64ef.zip
Use `rustc_interface::interface::Config::parse_sess_created` in Clippy
-rw-r--r--src/tools/clippy/src/driver.rs20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/tools/clippy/src/driver.rs b/src/tools/clippy/src/driver.rs
index 30272c9b800..b6aed862e89 100644
--- a/src/tools/clippy/src/driver.rs
+++ b/src/tools/clippy/src/driver.rs
@@ -15,7 +15,7 @@ extern crate rustc_session;
 extern crate rustc_span;
 
 use rustc_interface::interface;
-use rustc_session::Session;
+use rustc_session::parse::ParseSess;
 use rustc_span::symbol::Symbol;
 use rustc_tools_util::VersionInfo;
 
@@ -63,8 +63,8 @@ fn test_arg_value() {
     assert_eq!(arg_value(args, "--foo", |_| true), None);
 }
 
-fn track_clippy_args(sess: &Session, args_env_var: &Option<String>) {
-    sess.parse_sess.env_depinfo.borrow_mut().insert((
+fn track_clippy_args(parse_sess: &mut ParseSess, args_env_var: &Option<String>) {
+    parse_sess.env_depinfo.get_mut().insert((
         Symbol::intern("CLIPPY_ARGS"),
         args_env_var.as_deref().map(Symbol::intern),
     ));
@@ -81,14 +81,9 @@ struct RustcCallbacks {
 
 impl rustc_driver::Callbacks for RustcCallbacks {
     fn config(&mut self, config: &mut interface::Config) {
-        let previous = config.register_lints.take();
         let clippy_args_var = self.clippy_args_var.take();
-        config.register_lints = Some(Box::new(move |sess, lint_store| {
-            if let Some(ref previous) = previous {
-                (previous)(sess, lint_store);
-            }
-
-            track_clippy_args(sess, &clippy_args_var);
+        config.parse_sess_created = Some(Box::new(move |parse_sess| {
+            track_clippy_args(parse_sess, &clippy_args_var);
         }));
     }
 }
@@ -101,6 +96,9 @@ impl rustc_driver::Callbacks for ClippyCallbacks {
     fn config(&mut self, config: &mut interface::Config) {
         let previous = config.register_lints.take();
         let clippy_args_var = self.clippy_args_var.take();
+        config.parse_sess_created = Some(Box::new(move |parse_sess| {
+            track_clippy_args(parse_sess, &clippy_args_var);
+        }));
         config.register_lints = Some(Box::new(move |sess, mut lint_store| {
             // technically we're ~guaranteed that this is none but might as well call anything that
             // is there already. Certainly it can't hurt.
@@ -108,8 +106,6 @@ impl rustc_driver::Callbacks for ClippyCallbacks {
                 (previous)(sess, lint_store);
             }
 
-            track_clippy_args(sess, &clippy_args_var);
-
             let conf = clippy_lints::read_conf(&[], &sess);
             clippy_lints::register_plugins(&mut lint_store, &sess, &conf);
             clippy_lints::register_pre_expansion_lints(&mut lint_store);