From 87e9dee884988aa4385723ec08d69c548f7f50a2 Mon Sep 17 00:00:00 2001 From: krk Date: Mon, 10 Jun 2019 19:25:00 +0200 Subject: [PATCH] Use RedundantStaticLifetime in StaticStatic. --- clippy_lints/src/static_static_lifetime.rs | 54 ++-------------------- 1 file changed, 5 insertions(+), 49 deletions(-) diff --git a/clippy_lints/src/static_static_lifetime.rs b/clippy_lints/src/static_static_lifetime.rs index 338d9e76602..518cb5e7a7a 100644 --- a/clippy_lints/src/static_static_lifetime.rs +++ b/clippy_lints/src/static_static_lifetime.rs @@ -1,7 +1,7 @@ -use crate::utils::{in_macro_or_desugar, snippet, span_lint_and_then}; +use crate::redundant_static_lifetime::RedundantStaticLifetime; +use crate::utils::in_macro_or_desugar; use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass}; use rustc::{declare_lint_pass, declare_tool_lint}; -use rustc_errors::Applicability; use syntax::ast::*; declare_clippy_lint! { @@ -31,51 +31,9 @@ impl StaticStatic { // Recursively visit types fn visit_type(&mut self, ty: &Ty, cx: &EarlyContext<'_>) { - match ty.node { - // Be careful of nested structures (arrays and tuples) - TyKind::Array(ref ty, _) => { - self.visit_type(&*ty, cx); - }, - TyKind::Tup(ref tup) => { - for tup_ty in tup { - self.visit_type(&*tup_ty, cx); - } - }, - // This is what we are looking for ! - TyKind::Rptr(ref optional_lifetime, ref borrow_type) => { - // Match the 'static lifetime - if let Some(lifetime) = *optional_lifetime { - match borrow_type.ty.node { - TyKind::Path(..) | TyKind::Slice(..) | TyKind::Array(..) | TyKind::Tup(..) => { - if lifetime.ident.name == syntax::symbol::kw::StaticLifetime { - let snip = snippet(cx, borrow_type.ty.span, ""); - let sugg = format!("&{}", snip); - span_lint_and_then( - cx, - STATIC_STATIC_LIFETIME, - lifetime.ident.span, - "Statics have by default a `'static` lifetime", - |db| { - db.span_suggestion( - ty.span, - "consider removing `'static`", - sugg, - Applicability::MachineApplicable, //snippet - ); - }, - ); - } - }, - _ => {}, - } - } - self.visit_type(&*borrow_type.ty, cx); - }, - TyKind::Slice(ref ty) => { - self.visit_type(ty, cx); - }, - _ => {}, - } + let mut rsl = + RedundantStaticLifetime::new(STATIC_STATIC_LIFETIME, "Statics have by default a `'static` lifetime"); + rsl.visit_type(ty, cx) } } @@ -88,6 +46,4 @@ fn check_item(&mut self, cx: &EarlyContext<'_>, item: &Item) { } } } - - // Don't check associated consts because `'static` cannot be elided on those (issue #2438) }