@@ -23,7 +23,7 @@ macro_rules! dylint_library {
23
23
24
24
#[ macro_export]
25
25
macro_rules! __declare_and_register_lint {
26
- ( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr, $register_pass_method: ident, $default : expr) => {
26
+ ( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr, $register_pass_method: ident, $pass : expr) => {
27
27
$crate:: dylint_library!( ) ;
28
28
29
29
extern crate rustc_lint;
@@ -32,17 +32,42 @@ macro_rules! __declare_and_register_lint {
32
32
#[ no_mangle]
33
33
pub fn register_lints( _sess: & rustc_session:: Session , lint_store: & mut rustc_lint:: LintStore ) {
34
34
lint_store. register_lints( & [ $NAME] ) ;
35
- lint_store. $register_pass_method( || Box :: new ( $default ) ) ;
35
+ lint_store. $register_pass_method( $pass ) ;
36
36
}
37
37
38
38
rustc_session:: declare_lint!( $( #[ $attr] ) * $vis $NAME, $Level, $desc) ;
39
39
} ;
40
40
}
41
41
42
+ #[ rustversion:: before( 2022 -09 -08 ) ]
43
+ #[ macro_export]
44
+ macro_rules! __make_late_closure {
45
+ ( $pass: expr) => {
46
+ || Box :: new( $pass)
47
+ } ;
48
+ }
49
+
50
+ // Relevant PR and merge commit:
51
+ // * https://github.com/rust-lang/rust/pull/101501
52
+ // * https://github.com/rust-lang/rust/commit/87788097b776f8e3662f76627944230684b671bd
53
+ #[ rustversion:: since( 2022 -09 -08 ) ]
54
+ #[ macro_export]
55
+ macro_rules! __make_late_closure {
56
+ ( $pass: expr) => {
57
+ |_| Box :: new( $pass)
58
+ } ;
59
+ }
60
+
42
61
#[ macro_export]
43
62
macro_rules! impl_pre_expansion_lint {
44
- ( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr, $default: expr) => {
45
- $crate:: __declare_and_register_lint!( $( #[ $attr] ) * $vis $NAME, $Level, $desc, register_pre_expansion_pass, $default) ;
63
+ ( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr, $pass: expr) => {
64
+ $crate:: __declare_and_register_lint!(
65
+ $( #[ $attr] ) * $vis $NAME,
66
+ $Level,
67
+ $desc,
68
+ register_pre_expansion_pass,
69
+ || Box :: new( $pass)
70
+ ) ;
46
71
$crate:: paste:: paste! {
47
72
rustc_session:: impl_lint_pass!( [ < $NAME: camel >] => [ $NAME] ) ;
48
73
}
@@ -51,8 +76,14 @@ macro_rules! impl_pre_expansion_lint {
51
76
52
77
#[ macro_export]
53
78
macro_rules! impl_early_lint {
54
- ( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr, $default: expr) => {
55
- $crate:: __declare_and_register_lint!( $( #[ $attr] ) * $vis $NAME, $Level, $desc, register_early_pass, $default) ;
79
+ ( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr, $pass: expr) => {
80
+ $crate:: __declare_and_register_lint!(
81
+ $( #[ $attr] ) * $vis $NAME,
82
+ $Level,
83
+ $desc,
84
+ register_early_pass,
85
+ || Box :: new( $pass)
86
+ ) ;
56
87
$crate:: paste:: paste! {
57
88
rustc_session:: impl_lint_pass!( [ < $NAME: camel >] => [ $NAME] ) ;
58
89
}
@@ -61,8 +92,14 @@ macro_rules! impl_early_lint {
61
92
62
93
#[ macro_export]
63
94
macro_rules! impl_late_lint {
64
- ( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr, $default: expr) => {
65
- $crate:: __declare_and_register_lint!( $( #[ $attr] ) * $vis $NAME, $Level, $desc, register_late_pass, $default) ;
95
+ ( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr, $pass: expr) => {
96
+ $crate:: __declare_and_register_lint!(
97
+ $( #[ $attr] ) * $vis $NAME,
98
+ $Level,
99
+ $desc,
100
+ register_late_pass,
101
+ $crate:: __make_late_closure!( $pass)
102
+ ) ;
66
103
$crate:: paste:: paste! {
67
104
rustc_session:: impl_lint_pass!( [ < $NAME: camel >] => [ $NAME] ) ;
68
105
}
@@ -73,7 +110,13 @@ macro_rules! impl_late_lint {
73
110
macro_rules! declare_pre_expansion_lint {
74
111
( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr) => {
75
112
$crate:: paste:: paste! {
76
- $crate:: __declare_and_register_lint!( $( #[ $attr] ) * $vis $NAME, $Level, $desc, register_pre_expansion_pass, [ < $NAME: camel >] ) ;
113
+ $crate:: __declare_and_register_lint!(
114
+ $( #[ $attr] ) * $vis $NAME,
115
+ $Level,
116
+ $desc,
117
+ register_pre_expansion_pass,
118
+ || Box :: new( [ < $NAME: camel >] )
119
+ ) ;
77
120
rustc_session:: declare_lint_pass!( [ < $NAME: camel >] => [ $NAME] ) ;
78
121
}
79
122
} ;
@@ -83,7 +126,13 @@ macro_rules! declare_pre_expansion_lint {
83
126
macro_rules! declare_early_lint {
84
127
( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr) => {
85
128
$crate:: paste:: paste! {
86
- $crate:: __declare_and_register_lint!( $( #[ $attr] ) * $vis $NAME, $Level, $desc, register_early_pass, [ < $NAME: camel >] ) ;
129
+ $crate:: __declare_and_register_lint!(
130
+ $( #[ $attr] ) * $vis $NAME,
131
+ $Level,
132
+ $desc,
133
+ register_early_pass,
134
+ || Box :: new( [ < $NAME: camel >] )
135
+ ) ;
87
136
rustc_session:: declare_lint_pass!( [ < $NAME: camel >] => [ $NAME] ) ;
88
137
}
89
138
} ;
@@ -93,7 +142,13 @@ macro_rules! declare_early_lint {
93
142
macro_rules! declare_late_lint {
94
143
( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr) => {
95
144
$crate:: paste:: paste! {
96
- $crate:: __declare_and_register_lint!( $( #[ $attr] ) * $vis $NAME, $Level, $desc, register_late_pass, [ < $NAME: camel >] ) ;
145
+ $crate:: __declare_and_register_lint!(
146
+ $( #[ $attr] ) * $vis $NAME,
147
+ $Level,
148
+ $desc,
149
+ register_late_pass,
150
+ $crate:: __make_late_closure!( [ < $NAME: camel >] )
151
+ ) ;
97
152
rustc_session:: declare_lint_pass!( [ < $NAME: camel >] => [ $NAME] ) ;
98
153
}
99
154
} ;
0 commit comments