@@ -21,9 +21,28 @@ macro_rules! dylint_library {
21
21
} ;
22
22
}
23
23
24
+ #[ rustversion:: before( 2022 -09 -08 ) ]
25
+ #[ macro_export]
26
+ macro_rules! __make_closure {
27
+ ( $pass: expr) => {
28
+ || Box :: new( $pass)
29
+ } ;
30
+ }
31
+
32
+ // Relevant PR and merge commit:
33
+ // * https://github.com/rust-lang/rust/pull/101501
34
+ // * https://github.com/rust-lang/rust/commit/87788097b776f8e3662f76627944230684b671bd
35
+ #[ rustversion:: since( 2022 -09 -08 ) ]
36
+ #[ macro_export]
37
+ macro_rules! __make_closure {
38
+ ( $pass: expr) => {
39
+ |_| Box :: new( $pass)
40
+ } ;
41
+ }
42
+
24
43
#[ macro_export]
25
44
macro_rules! __declare_and_register_lint {
26
- ( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr, $register_pass_method: ident, $default : expr) => {
45
+ ( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr, $register_pass_method: ident, $pass : expr) => {
27
46
$crate:: dylint_library!( ) ;
28
47
29
48
extern crate rustc_lint;
@@ -32,7 +51,7 @@ macro_rules! __declare_and_register_lint {
32
51
#[ no_mangle]
33
52
pub fn register_lints( _sess: & rustc_session:: Session , lint_store: & mut rustc_lint:: LintStore ) {
34
53
lint_store. register_lints( & [ $NAME] ) ;
35
- lint_store. $register_pass_method( || Box :: new ( $default ) ) ;
54
+ lint_store. $register_pass_method( $crate :: __make_closure! ( $pass ) ) ;
36
55
}
37
56
38
57
rustc_session:: declare_lint!( $( #[ $attr] ) * $vis $NAME, $Level, $desc) ;
@@ -41,8 +60,8 @@ macro_rules! __declare_and_register_lint {
41
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!( $( #[ $attr] ) * $vis $NAME, $Level, $desc, register_pre_expansion_pass, $pass ) ;
46
65
$crate:: paste:: paste! {
47
66
rustc_session:: impl_lint_pass!( [ < $NAME: camel >] => [ $NAME] ) ;
48
67
}
@@ -51,8 +70,8 @@ macro_rules! impl_pre_expansion_lint {
51
70
52
71
#[ macro_export]
53
72
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 ) ;
73
+ ( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr, $pass : expr) => {
74
+ $crate:: __declare_and_register_lint!( $( #[ $attr] ) * $vis $NAME, $Level, $desc, register_early_pass, $pass ) ;
56
75
$crate:: paste:: paste! {
57
76
rustc_session:: impl_lint_pass!( [ < $NAME: camel >] => [ $NAME] ) ;
58
77
}
@@ -61,8 +80,8 @@ macro_rules! impl_early_lint {
61
80
62
81
#[ macro_export]
63
82
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 ) ;
83
+ ( $( #[ $attr: meta] ) * $vis: vis $NAME: ident, $Level: ident, $desc: expr, $pass : expr) => {
84
+ $crate:: __declare_and_register_lint!( $( #[ $attr] ) * $vis $NAME, $Level, $desc, register_late_pass, $pass ) ;
66
85
$crate:: paste:: paste! {
67
86
rustc_session:: impl_lint_pass!( [ < $NAME: camel >] => [ $NAME] ) ;
68
87
}
0 commit comments