]> git.lizzy.rs Git - rust.git/commitdiff
Rename const_static_lifetime to redundant_static_lifetime.
authorkrk <keremkat@gmail.com>
Tue, 11 Jun 2019 19:52:18 +0000 (21:52 +0200)
committerflip1995 <hello@philkrones.com>
Fri, 14 Jun 2019 08:45:02 +0000 (10:45 +0200)
CHANGELOG.md
clippy_lints/src/const_static_lifetime.rs [deleted file]
clippy_lints/src/lib.rs
clippy_lints/src/redundant_static_lifetime.rs [new file with mode: 0644]
tests/ui/const_static_lifetime.rs [deleted file]
tests/ui/const_static_lifetime.stderr [deleted file]
tests/ui/redundant_static_lifetime.rs [new file with mode: 0644]
tests/ui/redundant_static_lifetime.stderr [new file with mode: 0644]

index 03c8be124c333bd32c330f087229feab4f80ebb4..4f8c562c826b0bff9b76ebdb624bde60ceee7a6a 100644 (file)
@@ -881,7 +881,6 @@ All notable changes to this project will be documented in this file.
 [`cmp_owned`]: https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned
 [`cognitive_complexity`]: https://rust-lang.github.io/rust-clippy/master/index.html#cognitive_complexity
 [`collapsible_if`]: https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
-[`const_static_lifetime`]: https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime
 [`copy_iterator`]: https://rust-lang.github.io/rust-clippy/master/index.html#copy_iterator
 [`crosspointer_transmute`]: https://rust-lang.github.io/rust-clippy/master/index.html#crosspointer_transmute
 [`dbg_macro`]: https://rust-lang.github.io/rust-clippy/master/index.html#dbg_macro
@@ -1068,6 +1067,7 @@ All notable changes to this project will be documented in this file.
 [`redundant_field_names`]: https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
 [`redundant_pattern`]: https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern
 [`redundant_pattern_matching`]: https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching
+[`redundant_static_lifetime`]: https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetime
 [`ref_in_deref`]: https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref
 [`regex_macro`]: https://rust-lang.github.io/rust-clippy/master/index.html#regex_macro
 [`replace_consts`]: https://rust-lang.github.io/rust-clippy/master/index.html#replace_consts
@@ -1088,7 +1088,6 @@ All notable changes to this project will be documented in this file.
 [`single_match`]: https://rust-lang.github.io/rust-clippy/master/index.html#single_match
 [`single_match_else`]: https://rust-lang.github.io/rust-clippy/master/index.html#single_match_else
 [`slow_vector_initialization`]: https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization
-[`static_static_lifetime`]: https://rust-lang.github.io/rust-clippy/master/index.html#static_static_lifetime
 [`str_to_string`]: https://rust-lang.github.io/rust-clippy/master/index.html#str_to_string
 [`string_add`]: https://rust-lang.github.io/rust-clippy/master/index.html#string_add
 [`string_add_assign`]: https://rust-lang.github.io/rust-clippy/master/index.html#string_add_assign
diff --git a/clippy_lints/src/const_static_lifetime.rs b/clippy_lints/src/const_static_lifetime.rs
deleted file mode 100644 (file)
index b3eb2b9..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-use crate::utils::{in_macro_or_desugar, snippet, span_lint_and_then};
-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! {
-    /// **What it does:** Checks for constants and statics with an explicit `'static` lifetime.
-    ///
-    /// **Why is this bad?** Adding `'static` to every reference can create very
-    /// complicated types.
-    ///
-    /// **Known problems:** None.
-    ///
-    /// **Example:**
-    /// ```ignore
-    /// const FOO: &'static [(&'static str, &'static str, fn(&Bar) -> bool)] =
-    /// &[...]
-    /// static FOO: &'static [(&'static str, &'static str, fn(&Bar) -> bool)] =
-    /// &[...]
-    /// ```
-    /// This code can be rewritten as
-    /// ```ignore
-    ///  const FOO: &[(&str, &str, fn(&Bar) -> bool)] = &[...]
-    ///  static FOO: &[(&str, &str, fn(&Bar) -> bool)] = &[...]
-    /// ```
-    pub CONST_STATIC_LIFETIME,
-    style,
-    "Using explicit `'static` lifetime for constants or statics when elision rules would allow omitting them."
-}
-
-declare_lint_pass!(StaticConst => [CONST_STATIC_LIFETIME]);
-
-impl StaticConst {
-    // Recursively visit types
-    pub fn visit_type(&mut self, ty: &Ty, cx: &EarlyContext<'_>, reason: &str) {
-        match ty.node {
-            // Be careful of nested structures (arrays and tuples)
-            TyKind::Array(ref ty, _) => {
-                self.visit_type(&*ty, cx, reason);
-            },
-            TyKind::Tup(ref tup) => {
-                for tup_ty in tup {
-                    self.visit_type(&*tup_ty, cx, reason);
-                }
-            },
-            // 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, "<type>");
-                                let sugg = format!("&{}", snip);
-                                span_lint_and_then(cx, CONST_STATIC_LIFETIME, lifetime.ident.span, reason, |db| {
-                                    db.span_suggestion(
-                                        ty.span,
-                                        "consider removing `'static`",
-                                        sugg,
-                                        Applicability::MachineApplicable, //snippet
-                                    );
-                                });
-                            }
-                        },
-                        _ => {},
-                    }
-                }
-                self.visit_type(&*borrow_type.ty, cx, reason);
-            },
-            TyKind::Slice(ref ty) => {
-                self.visit_type(ty, cx, reason);
-            },
-            _ => {},
-        }
-    }
-}
-
-impl EarlyLintPass for StaticConst {
-    fn check_item(&mut self, cx: &EarlyContext<'_>, item: &Item) {
-        if !in_macro_or_desugar(item.span) {
-            if let ItemKind::Const(ref var_type, _) = item.node {
-                self.visit_type(var_type, cx, "Constants have by default a `'static` lifetime");
-                // Don't check associated consts because `'static` cannot be elided on those (issue #2438)
-            }
-
-            if let ItemKind::Static(ref var_type, _, _) = item.node {
-                self.visit_type(var_type, cx, "Statics have by default a `'static` lifetime");
-            }
-        }
-    }
-}
index 2bec5cb2d0159ea0cb767f4adf3fd74849b5552c..8a56e04973c9032e44a5873965beafb44bb56387 100644 (file)
@@ -157,7 +157,6 @@ macro_rules! declare_clippy_lint {
 pub mod checked_conversions;
 pub mod cognitive_complexity;
 pub mod collapsible_if;
-pub mod const_static_lifetime;
 pub mod copies;
 pub mod copy_iterator;
 pub mod dbg_macro;
@@ -249,6 +248,7 @@ macro_rules! declare_clippy_lint {
 pub mod redundant_clone;
 pub mod redundant_field_names;
 pub mod redundant_pattern_matching;
+pub mod redundant_static_lifetime;
 pub mod reference;
 pub mod regex;
 pub mod replace_consts;
@@ -553,7 +553,7 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
     reg.register_late_lint_pass(box invalid_ref::InvalidRef);
     reg.register_late_lint_pass(box identity_conversion::IdentityConversion::default());
     reg.register_late_lint_pass(box types::ImplicitHasher);
-    reg.register_early_lint_pass(box const_static_lifetime::StaticConst);
+    reg.register_early_lint_pass(box redundant_static_lifetime::RedundantStaticLifetime);
     reg.register_late_lint_pass(box fallible_impl_from::FallibleImplFrom);
     reg.register_late_lint_pass(box replace_consts::ReplaceConsts);
     reg.register_late_lint_pass(box types::UnitArg);
@@ -686,7 +686,6 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
         bytecount::NAIVE_BYTECOUNT,
         cognitive_complexity::COGNITIVE_COMPLEXITY,
         collapsible_if::COLLAPSIBLE_IF,
-        const_static_lifetime::CONST_STATIC_LIFETIME,
         copies::IFS_SAME_COND,
         copies::IF_SAME_THEN_ELSE,
         derive::DERIVE_HASH_XOR_EQ,
@@ -834,6 +833,7 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
         ranges::RANGE_ZIP_WITH_LEN,
         redundant_field_names::REDUNDANT_FIELD_NAMES,
         redundant_pattern_matching::REDUNDANT_PATTERN_MATCHING,
+        redundant_static_lifetime::REDUNDANT_STATIC_LIFETIME,
         reference::DEREF_ADDROF,
         reference::REF_IN_DEREF,
         regex::INVALID_REGEX,
@@ -901,7 +901,6 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
         block_in_if_condition::BLOCK_IN_IF_CONDITION_EXPR,
         block_in_if_condition::BLOCK_IN_IF_CONDITION_STMT,
         collapsible_if::COLLAPSIBLE_IF,
-        const_static_lifetime::CONST_STATIC_LIFETIME,
         enum_variants::ENUM_VARIANT_NAMES,
         enum_variants::MODULE_INCEPTION,
         eq_op::OP_REF,
@@ -957,6 +956,7 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
         question_mark::QUESTION_MARK,
         redundant_field_names::REDUNDANT_FIELD_NAMES,
         redundant_pattern_matching::REDUNDANT_PATTERN_MATCHING,
+        redundant_static_lifetime::REDUNDANT_STATIC_LIFETIME,
         regex::REGEX_MACRO,
         regex::TRIVIAL_REGEX,
         returns::LET_AND_RETURN,
diff --git a/clippy_lints/src/redundant_static_lifetime.rs b/clippy_lints/src/redundant_static_lifetime.rs
new file mode 100644 (file)
index 0000000..2e49fde
--- /dev/null
@@ -0,0 +1,92 @@
+use crate::utils::{in_macro_or_desugar, snippet, span_lint_and_then};
+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! {
+    /// **What it does:** Checks for constants and statics with an explicit `'static` lifetime.
+    ///
+    /// **Why is this bad?** Adding `'static` to every reference can create very
+    /// complicated types.
+    ///
+    /// **Known problems:** None.
+    ///
+    /// **Example:**
+    /// ```ignore
+    /// const FOO: &'static [(&'static str, &'static str, fn(&Bar) -> bool)] =
+    /// &[...]
+    /// static FOO: &'static [(&'static str, &'static str, fn(&Bar) -> bool)] =
+    /// &[...]
+    /// ```
+    /// This code can be rewritten as
+    /// ```ignore
+    ///  const FOO: &[(&str, &str, fn(&Bar) -> bool)] = &[...]
+    ///  static FOO: &[(&str, &str, fn(&Bar) -> bool)] = &[...]
+    /// ```
+    pub REDUNDANT_STATIC_LIFETIME,
+    style,
+    "Using explicit `'static` lifetime for constants or statics when elision rules would allow omitting them."
+}
+
+declare_lint_pass!(RedundantStaticLifetime => [REDUNDANT_STATIC_LIFETIME]);
+
+impl RedundantStaticLifetime {
+    // Recursively visit types
+    pub fn visit_type(&mut self, ty: &Ty, cx: &EarlyContext<'_>, reason: &str) {
+        match ty.node {
+            // Be careful of nested structures (arrays and tuples)
+            TyKind::Array(ref ty, _) => {
+                self.visit_type(&*ty, cx, reason);
+            },
+            TyKind::Tup(ref tup) => {
+                for tup_ty in tup {
+                    self.visit_type(&*tup_ty, cx, reason);
+                }
+            },
+            // 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, "<type>");
+                                let sugg = format!("&{}", snip);
+                                span_lint_and_then(cx, REDUNDANT_STATIC_LIFETIME, lifetime.ident.span, reason, |db| {
+                                    db.span_suggestion(
+                                        ty.span,
+                                        "consider removing `'static`",
+                                        sugg,
+                                        Applicability::MachineApplicable, //snippet
+                                    );
+                                });
+                            }
+                        },
+                        _ => {},
+                    }
+                }
+                self.visit_type(&*borrow_type.ty, cx, reason);
+            },
+            TyKind::Slice(ref ty) => {
+                self.visit_type(ty, cx, reason);
+            },
+            _ => {},
+        }
+    }
+}
+
+impl EarlyLintPass for RedundantStaticLifetime {
+    fn check_item(&mut self, cx: &EarlyContext<'_>, item: &Item) {
+        if !in_macro_or_desugar(item.span) {
+            if let ItemKind::Const(ref var_type, _) = item.node {
+                self.visit_type(var_type, cx, "Constants have by default a `'static` lifetime");
+                // Don't check associated consts because `'static` cannot be elided on those (issue #2438)
+            }
+
+            if let ItemKind::Static(ref var_type, _, _) = item.node {
+                self.visit_type(var_type, cx, "Statics have by default a `'static` lifetime");
+            }
+        }
+    }
+}
diff --git a/tests/ui/const_static_lifetime.rs b/tests/ui/const_static_lifetime.rs
deleted file mode 100644 (file)
index fc9f0e0..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#[derive(Debug)]
-struct Foo {}
-
-const VAR_ONE: &'static str = "Test constant #1"; // ERROR Consider removing 'static.
-
-const VAR_TWO: &str = "Test constant #2"; // This line should not raise a warning.
-
-const VAR_THREE: &[&'static str] = &["one", "two"]; // ERROR Consider removing 'static
-
-const VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
-
-const VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
-
-const VAR_SIX: &'static u8 = &5;
-
-const VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
-
-const VAR_HEIGHT: &'static Foo = &Foo {};
-
-const VAR_SLICE: &'static [u8] = b"Test constant #1"; // ERROR Consider removing 'static.
-
-const VAR_TUPLE: &'static (u8, u8) = &(1, 2); // ERROR Consider removing 'static.
-
-const VAR_ARRAY: &'static [u8; 1] = b"T"; // ERROR Consider removing 'static.
-
-static STATIC_VAR_ONE: &'static str = "Test static #1"; // ERROR Consider removing 'static.
-
-static STATIC_VAR_TWO: &str = "Test static #2"; // This line should not raise a warning.
-
-static STATIC_VAR_THREE: &[&'static str] = &["one", "two"]; // ERROR Consider removing 'static
-
-static STATIC_VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
-
-static STATIC_VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
-
-static STATIC_VAR_SIX: &'static u8 = &5;
-
-static STATIC_VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
-
-static STATIC_VAR_HEIGHT: &'static Foo = &Foo {};
-
-static STATIC_VAR_SLICE: &'static [u8] = b"Test static #3"; // ERROR Consider removing 'static.
-
-static STATIC_VAR_TUPLE: &'static (u8, u8) = &(1, 2); // ERROR Consider removing 'static.
-
-static STATIC_VAR_ARRAY: &'static [u8; 1] = b"T"; // ERROR Consider removing 'static.
-
-fn main() {
-    let false_positive: &'static str = "test";
-    println!("{}", VAR_ONE);
-    println!("{}", VAR_TWO);
-    println!("{:?}", VAR_THREE);
-    println!("{:?}", VAR_FOUR);
-    println!("{:?}", VAR_FIVE);
-    println!("{:?}", VAR_SIX);
-    println!("{:?}", VAR_SEVEN);
-    println!("{:?}", VAR_HEIGHT);
-    println!("{}", false_positive);
-}
-
-trait Bar {
-    const TRAIT_VAR: &'static str;
-}
-
-impl Foo {
-    const IMPL_VAR: &'static str = "var";
-}
-
-impl Bar for Foo {
-    const TRAIT_VAR: &'static str = "foo";
-}
diff --git a/tests/ui/const_static_lifetime.stderr b/tests/ui/const_static_lifetime.stderr
deleted file mode 100644 (file)
index eb4d320..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:4:17
-   |
-LL | const VAR_ONE: &'static str = "Test constant #1"; // ERROR Consider removing 'static.
-   |                -^^^^^^^---- help: consider removing `'static`: `&str`
-   |
-   = note: `-D clippy::const-static-lifetime` implied by `-D warnings`
-
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:8:21
-   |
-LL | const VAR_THREE: &[&'static str] = &["one", "two"]; // ERROR Consider removing 'static
-   |                    -^^^^^^^---- help: consider removing `'static`: `&str`
-
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:10:32
-   |
-LL | const VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
-   |                               -^^^^^^^---- help: consider removing `'static`: `&str`
-
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:10:47
-   |
-LL | const VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
-   |                                              -^^^^^^^---- help: consider removing `'static`: `&str`
-
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:12:18
-   |
-LL | const VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
-   |                 -^^^^^^^------------------ help: consider removing `'static`: `&[&[&'static str]]`
-
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:12:30
-   |
-LL | const VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
-   |                             -^^^^^^^---- help: consider removing `'static`: `&str`
-
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:14:17
-   |
-LL | const VAR_SIX: &'static u8 = &5;
-   |                -^^^^^^^--- help: consider removing `'static`: `&u8`
-
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:16:29
-   |
-LL | const VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
-   |                            -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]`
-
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:16:39
-   |
-LL | const VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
-   |                                      -^^^^^^^---- help: consider removing `'static`: `&str`
-
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:18:20
-   |
-LL | const VAR_HEIGHT: &'static Foo = &Foo {};
-   |                   -^^^^^^^---- help: consider removing `'static`: `&Foo`
-
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:20:19
-   |
-LL | const VAR_SLICE: &'static [u8] = b"Test constant #1"; // ERROR Consider removing 'static.
-   |                  -^^^^^^^----- help: consider removing `'static`: `&[u8]`
-
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:22:19
-   |
-LL | const VAR_TUPLE: &'static (u8, u8) = &(1, 2); // ERROR Consider removing 'static.
-   |                  -^^^^^^^--------- help: consider removing `'static`: `&(u8, u8)`
-
-error: Constants have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:24:19
-   |
-LL | const VAR_ARRAY: &'static [u8; 1] = b"T"; // ERROR Consider removing 'static.
-   |                  -^^^^^^^-------- help: consider removing `'static`: `&[u8; 1]`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:26:25
-   |
-LL | static STATIC_VAR_ONE: &'static str = "Test static #1"; // ERROR Consider removing 'static.
-   |                        -^^^^^^^---- help: consider removing `'static`: `&str`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:30:29
-   |
-LL | static STATIC_VAR_THREE: &[&'static str] = &["one", "two"]; // ERROR Consider removing 'static
-   |                            -^^^^^^^---- help: consider removing `'static`: `&str`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:32:40
-   |
-LL | static STATIC_VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
-   |                                       -^^^^^^^---- help: consider removing `'static`: `&str`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:32:55
-   |
-LL | static STATIC_VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
-   |                                                      -^^^^^^^---- help: consider removing `'static`: `&str`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:34:26
-   |
-LL | static STATIC_VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
-   |                         -^^^^^^^------------------ help: consider removing `'static`: `&[&[&'static str]]`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:34:38
-   |
-LL | static STATIC_VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
-   |                                     -^^^^^^^---- help: consider removing `'static`: `&str`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:36:25
-   |
-LL | static STATIC_VAR_SIX: &'static u8 = &5;
-   |                        -^^^^^^^--- help: consider removing `'static`: `&u8`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:38:37
-   |
-LL | static STATIC_VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
-   |                                    -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:38:47
-   |
-LL | static STATIC_VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
-   |                                              -^^^^^^^---- help: consider removing `'static`: `&str`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:40:28
-   |
-LL | static STATIC_VAR_HEIGHT: &'static Foo = &Foo {};
-   |                           -^^^^^^^---- help: consider removing `'static`: `&Foo`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:42:27
-   |
-LL | static STATIC_VAR_SLICE: &'static [u8] = b"Test static #3"; // ERROR Consider removing 'static.
-   |                          -^^^^^^^----- help: consider removing `'static`: `&[u8]`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:44:27
-   |
-LL | static STATIC_VAR_TUPLE: &'static (u8, u8) = &(1, 2); // ERROR Consider removing 'static.
-   |                          -^^^^^^^--------- help: consider removing `'static`: `&(u8, u8)`
-
-error: Statics have by default a `'static` lifetime
-  --> $DIR/const_static_lifetime.rs:46:27
-   |
-LL | static STATIC_VAR_ARRAY: &'static [u8; 1] = b"T"; // ERROR Consider removing 'static.
-   |                          -^^^^^^^-------- help: consider removing `'static`: `&[u8; 1]`
-
-error: aborting due to 26 previous errors
-
diff --git a/tests/ui/redundant_static_lifetime.rs b/tests/ui/redundant_static_lifetime.rs
new file mode 100644 (file)
index 0000000..fc9f0e0
--- /dev/null
@@ -0,0 +1,71 @@
+#[derive(Debug)]
+struct Foo {}
+
+const VAR_ONE: &'static str = "Test constant #1"; // ERROR Consider removing 'static.
+
+const VAR_TWO: &str = "Test constant #2"; // This line should not raise a warning.
+
+const VAR_THREE: &[&'static str] = &["one", "two"]; // ERROR Consider removing 'static
+
+const VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
+
+const VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
+
+const VAR_SIX: &'static u8 = &5;
+
+const VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
+
+const VAR_HEIGHT: &'static Foo = &Foo {};
+
+const VAR_SLICE: &'static [u8] = b"Test constant #1"; // ERROR Consider removing 'static.
+
+const VAR_TUPLE: &'static (u8, u8) = &(1, 2); // ERROR Consider removing 'static.
+
+const VAR_ARRAY: &'static [u8; 1] = b"T"; // ERROR Consider removing 'static.
+
+static STATIC_VAR_ONE: &'static str = "Test static #1"; // ERROR Consider removing 'static.
+
+static STATIC_VAR_TWO: &str = "Test static #2"; // This line should not raise a warning.
+
+static STATIC_VAR_THREE: &[&'static str] = &["one", "two"]; // ERROR Consider removing 'static
+
+static STATIC_VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
+
+static STATIC_VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
+
+static STATIC_VAR_SIX: &'static u8 = &5;
+
+static STATIC_VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
+
+static STATIC_VAR_HEIGHT: &'static Foo = &Foo {};
+
+static STATIC_VAR_SLICE: &'static [u8] = b"Test static #3"; // ERROR Consider removing 'static.
+
+static STATIC_VAR_TUPLE: &'static (u8, u8) = &(1, 2); // ERROR Consider removing 'static.
+
+static STATIC_VAR_ARRAY: &'static [u8; 1] = b"T"; // ERROR Consider removing 'static.
+
+fn main() {
+    let false_positive: &'static str = "test";
+    println!("{}", VAR_ONE);
+    println!("{}", VAR_TWO);
+    println!("{:?}", VAR_THREE);
+    println!("{:?}", VAR_FOUR);
+    println!("{:?}", VAR_FIVE);
+    println!("{:?}", VAR_SIX);
+    println!("{:?}", VAR_SEVEN);
+    println!("{:?}", VAR_HEIGHT);
+    println!("{}", false_positive);
+}
+
+trait Bar {
+    const TRAIT_VAR: &'static str;
+}
+
+impl Foo {
+    const IMPL_VAR: &'static str = "var";
+}
+
+impl Bar for Foo {
+    const TRAIT_VAR: &'static str = "foo";
+}
diff --git a/tests/ui/redundant_static_lifetime.stderr b/tests/ui/redundant_static_lifetime.stderr
new file mode 100644 (file)
index 0000000..10baf30
--- /dev/null
@@ -0,0 +1,160 @@
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:4:17
+   |
+LL | const VAR_ONE: &'static str = "Test constant #1"; // ERROR Consider removing 'static.
+   |                -^^^^^^^---- help: consider removing `'static`: `&str`
+   |
+   = note: `-D clippy::redundant-static-lifetime` implied by `-D warnings`
+
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:8:21
+   |
+LL | const VAR_THREE: &[&'static str] = &["one", "two"]; // ERROR Consider removing 'static
+   |                    -^^^^^^^---- help: consider removing `'static`: `&str`
+
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:10:32
+   |
+LL | const VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
+   |                               -^^^^^^^---- help: consider removing `'static`: `&str`
+
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:10:47
+   |
+LL | const VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
+   |                                              -^^^^^^^---- help: consider removing `'static`: `&str`
+
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:12:18
+   |
+LL | const VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
+   |                 -^^^^^^^------------------ help: consider removing `'static`: `&[&[&'static str]]`
+
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:12:30
+   |
+LL | const VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
+   |                             -^^^^^^^---- help: consider removing `'static`: `&str`
+
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:14:17
+   |
+LL | const VAR_SIX: &'static u8 = &5;
+   |                -^^^^^^^--- help: consider removing `'static`: `&u8`
+
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:16:29
+   |
+LL | const VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
+   |                            -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]`
+
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:16:39
+   |
+LL | const VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
+   |                                      -^^^^^^^---- help: consider removing `'static`: `&str`
+
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:18:20
+   |
+LL | const VAR_HEIGHT: &'static Foo = &Foo {};
+   |                   -^^^^^^^---- help: consider removing `'static`: `&Foo`
+
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:20:19
+   |
+LL | const VAR_SLICE: &'static [u8] = b"Test constant #1"; // ERROR Consider removing 'static.
+   |                  -^^^^^^^----- help: consider removing `'static`: `&[u8]`
+
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:22:19
+   |
+LL | const VAR_TUPLE: &'static (u8, u8) = &(1, 2); // ERROR Consider removing 'static.
+   |                  -^^^^^^^--------- help: consider removing `'static`: `&(u8, u8)`
+
+error: Constants have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:24:19
+   |
+LL | const VAR_ARRAY: &'static [u8; 1] = b"T"; // ERROR Consider removing 'static.
+   |                  -^^^^^^^-------- help: consider removing `'static`: `&[u8; 1]`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:26:25
+   |
+LL | static STATIC_VAR_ONE: &'static str = "Test static #1"; // ERROR Consider removing 'static.
+   |                        -^^^^^^^---- help: consider removing `'static`: `&str`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:30:29
+   |
+LL | static STATIC_VAR_THREE: &[&'static str] = &["one", "two"]; // ERROR Consider removing 'static
+   |                            -^^^^^^^---- help: consider removing `'static`: `&str`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:32:40
+   |
+LL | static STATIC_VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
+   |                                       -^^^^^^^---- help: consider removing `'static`: `&str`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:32:55
+   |
+LL | static STATIC_VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
+   |                                                      -^^^^^^^---- help: consider removing `'static`: `&str`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:34:26
+   |
+LL | static STATIC_VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
+   |                         -^^^^^^^------------------ help: consider removing `'static`: `&[&[&'static str]]`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:34:38
+   |
+LL | static STATIC_VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
+   |                                     -^^^^^^^---- help: consider removing `'static`: `&str`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:36:25
+   |
+LL | static STATIC_VAR_SIX: &'static u8 = &5;
+   |                        -^^^^^^^--- help: consider removing `'static`: `&u8`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:38:37
+   |
+LL | static STATIC_VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
+   |                                    -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:38:47
+   |
+LL | static STATIC_VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
+   |                                              -^^^^^^^---- help: consider removing `'static`: `&str`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:40:28
+   |
+LL | static STATIC_VAR_HEIGHT: &'static Foo = &Foo {};
+   |                           -^^^^^^^---- help: consider removing `'static`: `&Foo`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:42:27
+   |
+LL | static STATIC_VAR_SLICE: &'static [u8] = b"Test static #3"; // ERROR Consider removing 'static.
+   |                          -^^^^^^^----- help: consider removing `'static`: `&[u8]`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:44:27
+   |
+LL | static STATIC_VAR_TUPLE: &'static (u8, u8) = &(1, 2); // ERROR Consider removing 'static.
+   |                          -^^^^^^^--------- help: consider removing `'static`: `&(u8, u8)`
+
+error: Statics have by default a `'static` lifetime
+  --> $DIR/redundant_static_lifetime.rs:46:27
+   |
+LL | static STATIC_VAR_ARRAY: &'static [u8; 1] = b"T"; // ERROR Consider removing 'static.
+   |                          -^^^^^^^-------- help: consider removing `'static`: `&[u8; 1]`
+
+error: aborting due to 26 previous errors
+