1
+ use clippy_config:: msrvs:: { self , Msrv } ;
2
+ use clippy_config:: Conf ;
1
3
use clippy_utils:: diagnostics:: span_lint_and_sugg;
2
4
use clippy_utils:: source:: snippet_opt;
3
5
use rustc_errors:: Applicability ;
4
6
use rustc_hir:: def:: { DefKind , Res } ;
5
7
use rustc_hir:: { Item , ItemKind , UseKind } ;
6
8
use rustc_lint:: { LateContext , LateLintPass } ;
7
9
use rustc_middle:: ty:: Visibility ;
8
- use rustc_session:: declare_lint_pass ;
10
+ use rustc_session:: impl_lint_pass ;
9
11
use rustc_span:: symbol:: kw;
10
12
11
13
declare_clippy_lint ! {
@@ -42,11 +44,24 @@ declare_clippy_lint! {
42
44
"use items that import a trait but only use it anonymously"
43
45
}
44
46
45
- declare_lint_pass ! ( AnonTraitImport => [ ANON_TRAIT_IMPORT ] ) ;
47
+ pub struct AnonTraitImport {
48
+ msrv : Msrv ,
49
+ }
50
+
51
+ impl AnonTraitImport {
52
+ pub fn new ( conf : & ' static Conf ) -> Self {
53
+ Self {
54
+ msrv : conf. msrv . clone ( ) ,
55
+ }
56
+ }
57
+ }
58
+
59
+ impl_lint_pass ! ( AnonTraitImport => [ ANON_TRAIT_IMPORT ] ) ;
46
60
47
61
impl < ' tcx > LateLintPass < ' tcx > for AnonTraitImport {
48
62
fn check_item ( & mut self , cx : & LateContext < ' tcx > , item : & ' tcx Item < ' tcx > ) {
49
- if let ItemKind :: Use ( path, UseKind :: Single ) = item. kind
63
+ if self . msrv . meets ( msrvs:: UNDERSCORE_IMPORTS )
64
+ && let ItemKind :: Use ( path, UseKind :: Single ) = item. kind
50
65
// Ignore imports that already use Underscore
51
66
&& item. ident . name != kw:: Underscore
52
67
// Only check traits
@@ -70,4 +85,6 @@ impl<'tcx> LateLintPass<'tcx> for AnonTraitImport {
70
85
) ;
71
86
}
72
87
}
88
+
89
+ extract_msrv_attr ! ( LateContext ) ;
73
90
}
0 commit comments