1
- use crate :: utils:: { in_macro_or_desugar, snippet, span_lint_and_then} ;
1
+ use crate :: redundant_static_lifetime:: RedundantStaticLifetime ;
2
+ use crate :: utils:: in_macro_or_desugar;
2
3
use rustc:: lint:: { EarlyContext , EarlyLintPass , LintArray , LintPass } ;
3
4
use rustc:: { declare_lint_pass, declare_tool_lint} ;
4
- use rustc_errors:: Applicability ;
5
5
use syntax:: ast:: * ;
6
6
7
7
declare_clippy_lint ! {
@@ -31,51 +31,9 @@ declare_lint_pass!(StaticStatic => [STATIC_STATIC_LIFETIME]);
31
31
impl StaticStatic {
32
32
// Recursively visit types
33
33
fn visit_type ( & mut self , ty : & Ty , cx : & EarlyContext < ' _ > ) {
34
- match ty. node {
35
- // Be careful of nested structures (arrays and tuples)
36
- TyKind :: Array ( ref ty, _) => {
37
- self . visit_type ( & * ty, cx) ;
38
- } ,
39
- TyKind :: Tup ( ref tup) => {
40
- for tup_ty in tup {
41
- self . visit_type ( & * tup_ty, cx) ;
42
- }
43
- } ,
44
- // This is what we are looking for !
45
- TyKind :: Rptr ( ref optional_lifetime, ref borrow_type) => {
46
- // Match the 'static lifetime
47
- if let Some ( lifetime) = * optional_lifetime {
48
- match borrow_type. ty . node {
49
- TyKind :: Path ( ..) | TyKind :: Slice ( ..) | TyKind :: Array ( ..) | TyKind :: Tup ( ..) => {
50
- if lifetime. ident . name == syntax:: symbol:: kw:: StaticLifetime {
51
- let snip = snippet ( cx, borrow_type. ty . span , "<type>" ) ;
52
- let sugg = format ! ( "&{}" , snip) ;
53
- span_lint_and_then (
54
- cx,
55
- STATIC_STATIC_LIFETIME ,
56
- lifetime. ident . span ,
57
- "Statics have by default a `'static` lifetime" ,
58
- |db| {
59
- db. span_suggestion (
60
- ty. span ,
61
- "consider removing `'static`" ,
62
- sugg,
63
- Applicability :: MachineApplicable , //snippet
64
- ) ;
65
- } ,
66
- ) ;
67
- }
68
- } ,
69
- _ => { } ,
70
- }
71
- }
72
- self . visit_type ( & * borrow_type. ty , cx) ;
73
- } ,
74
- TyKind :: Slice ( ref ty) => {
75
- self . visit_type ( ty, cx) ;
76
- } ,
77
- _ => { } ,
78
- }
34
+ let mut rsl =
35
+ RedundantStaticLifetime :: new ( STATIC_STATIC_LIFETIME , "Statics have by default a `'static` lifetime" ) ;
36
+ rsl. visit_type ( ty, cx)
79
37
}
80
38
}
81
39
@@ -88,6 +46,4 @@ impl EarlyLintPass for StaticStatic {
88
46
}
89
47
}
90
48
}
91
-
92
- // Don't check associated consts because `'static` cannot be elided on those (issue #2438)
93
49
}
0 commit comments