@@ -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