@@ -15,7 +15,7 @@ extern crate rustc_session;
15
15
extern crate rustc_span;
16
16
17
17
use rustc_interface:: interface;
18
- use rustc_session:: Session ;
18
+ use rustc_session:: parse :: ParseSess ;
19
19
use rustc_span:: symbol:: Symbol ;
20
20
use rustc_tools_util:: VersionInfo ;
21
21
@@ -63,8 +63,8 @@ fn test_arg_value() {
63
63
assert_eq ! ( arg_value( args, "--foo" , |_| true ) , None ) ;
64
64
}
65
65
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 ( (
68
68
Symbol :: intern ( "CLIPPY_ARGS" ) ,
69
69
args_env_var. as_deref ( ) . map ( Symbol :: intern) ,
70
70
) ) ;
@@ -81,14 +81,9 @@ struct RustcCallbacks {
81
81
82
82
impl rustc_driver:: Callbacks for RustcCallbacks {
83
83
fn config ( & mut self , config : & mut interface:: Config ) {
84
- let previous = config. register_lints . take ( ) ;
85
84
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) ;
92
87
} ) ) ;
93
88
}
94
89
}
@@ -101,15 +96,16 @@ impl rustc_driver::Callbacks for ClippyCallbacks {
101
96
fn config ( & mut self , config : & mut interface:: Config ) {
102
97
let previous = config. register_lints . take ( ) ;
103
98
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
+ } ) ) ;
104
102
config. register_lints = Some ( Box :: new ( move |sess, mut lint_store| {
105
103
// technically we're ~guaranteed that this is none but might as well call anything that
106
104
// is there already. Certainly it can't hurt.
107
105
if let Some ( previous) = & previous {
108
106
( previous) ( sess, lint_store) ;
109
107
}
110
108
111
- track_clippy_args ( sess, & clippy_args_var) ;
112
-
113
109
let conf = clippy_lints:: read_conf ( & [ ] , & sess) ;
114
110
clippy_lints:: register_plugins ( & mut lint_store, & sess, & conf) ;
115
111
clippy_lints:: register_pre_expansion_lints ( & mut lint_store) ;
0 commit comments