|
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!(StaticConst => [CONST_STATIC_LIFETIME]); |
31 | 31 | impl StaticConst { |
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 | | - CONST_STATIC_LIFETIME, |
56 | | - lifetime.ident.span, |
57 | | - "Constants 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(CONST_STATIC_LIFETIME, "Constants have by default a `'static` lifetime"); |
| 36 | + rsl.visit_type(ty, cx) |
79 | 37 | } |
80 | 38 | } |
81 | 39 |
|
|
0 commit comments