@@ -15,7 +15,7 @@ extern crate rustc_session;
1515extern crate rustc_span;
1616
1717use rustc_interface:: interface;
18- use rustc_session:: Session ;
18+ use rustc_session:: parse :: ParseSess ;
1919use rustc_span:: symbol:: Symbol ;
2020use rustc_tools_util:: VersionInfo ;
2121
@@ -63,8 +63,8 @@ fn test_arg_value() {
6363 assert_eq ! ( arg_value( args, "--foo" , |_| true ) , None ) ;
6464}
6565
66- fn track_clippy_args ( sess : & Session , args_env_var : & Option < String > ) {
67- sess . parse_sess . env_depinfo . borrow_mut ( ) . insert ( (
66+ fn track_clippy_args ( parse_sess : & mut ParseSess , args_env_var : & Option < String > ) {
67+ parse_sess. env_depinfo . get_mut ( ) . insert ( (
6868 Symbol :: intern ( "CLIPPY_ARGS" ) ,
6969 args_env_var. as_deref ( ) . map ( Symbol :: intern) ,
7070 ) ) ;
@@ -81,14 +81,9 @@ struct RustcCallbacks {
8181
8282impl rustc_driver:: Callbacks for RustcCallbacks {
8383 fn config ( & mut self , config : & mut interface:: Config ) {
84- let previous = config. register_lints . take ( ) ;
8584 let clippy_args_var = self . clippy_args_var . take ( ) ;
86- config. register_lints = Some ( Box :: new ( move |sess, lint_store| {
87- if let Some ( ref previous) = previous {
88- ( previous) ( sess, lint_store) ;
89- }
90-
91- track_clippy_args ( sess, & clippy_args_var) ;
85+ config. parse_sess_created = Some ( Box :: new ( move |parse_sess| {
86+ track_clippy_args ( parse_sess, & clippy_args_var) ;
9287 } ) ) ;
9388 }
9489}
@@ -101,15 +96,16 @@ impl rustc_driver::Callbacks for ClippyCallbacks {
10196 fn config ( & mut self , config : & mut interface:: Config ) {
10297 let previous = config. register_lints . take ( ) ;
10398 let clippy_args_var = self . clippy_args_var . take ( ) ;
99+ config. parse_sess_created = Some ( Box :: new ( move |parse_sess| {
100+ track_clippy_args ( parse_sess, & clippy_args_var) ;
101+ } ) ) ;
104102 config. register_lints = Some ( Box :: new ( move |sess, mut lint_store| {
105103 // technically we're ~guaranteed that this is none but might as well call anything that
106104 // is there already. Certainly it can't hurt.
107105 if let Some ( previous) = & previous {
108106 ( previous) ( sess, lint_store) ;
109107 }
110108
111- track_clippy_args ( sess, & clippy_args_var) ;
112-
113109 let conf = clippy_lints:: read_conf ( & [ ] , & sess) ;
114110 clippy_lints:: register_plugins ( & mut lint_store, & sess, & conf) ;
115111 clippy_lints:: register_pre_expansion_lints ( & mut lint_store) ;
0 commit comments