Skip to content

Show wider and more accurate suggestion for const_static_lifetime #2366

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 16, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions clippy_lints/src/const_static_lifetime.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use syntax::ast::{Item, ItemKind, Ty, TyKind};
use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass};
use utils::{in_macro, span_lint_and_then};
use utils::{in_macro, snippet, span_lint_and_then};

/// **What it does:** Checks for constants with an explicit `'static` lifetime.
///
Expand Down Expand Up @@ -51,14 +51,15 @@ impl StaticConst {
TyKind::Path(..) | TyKind::Slice(..) | TyKind::Array(..) |
TyKind::Tup(..) => {
if lifetime.ident.name == "'static" {
let mut sug: String = String::new();
let snip = snippet(cx, borrow_type.ty.span, "<type>");
let sugg = format!("&{}", snip);
span_lint_and_then(
cx,
CONST_STATIC_LIFETIME,
lifetime.span,
"Constants have by default a `'static` lifetime",
|db| {
db.span_suggestion(lifetime.span, "consider removing `'static`", sug);
db.span_suggestion(ty.span, "consider removing `'static`", sugg);
},
);
}
Expand Down
26 changes: 13 additions & 13 deletions tests/ui/const_static_lifetime.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -2,79 +2,79 @@ error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:4:17
|
4 | const VAR_ONE: &'static str = "Test constant #1"; // ERROR Consider removing 'static.
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^---- help: consider removing `'static`: `&str`
|
= note: `-D const-static-lifetime` implied by `-D warnings`

error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:8:21
|
8 | const VAR_THREE: &[&'static str] = &["one", "two"]; // ERROR Consider removing 'static
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^---- help: consider removing `'static`: `&str`

error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:10:32
|
10 | const VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^---- help: consider removing `'static`: `&str`

error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:10:47
|
10 | const VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^---- help: consider removing `'static`: `&str`

error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:12:18
|
12 | const VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^------------------ help: consider removing `'static`: `&[&[&'static str]]`

error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:12:30
|
12 | const VAR_FIVE: &'static [&[&'static str]] = &[&["test"], &["other one"]]; // ERROR Consider removing 'static
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^---- help: consider removing `'static`: `&str`

error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:14:17
|
14 | const VAR_SIX: &'static u8 = &5;
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^--- help: consider removing `'static`: `&u8`

error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:16:29
|
16 | const VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]`

error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:16:39
|
16 | const VAR_SEVEN: &[&(&str, &'static [&'static str])] = &[&("one", &["other one"])];
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^---- help: consider removing `'static`: `&str`

error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:18:20
|
18 | const VAR_HEIGHT: &'static Foo = &Foo {};
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^---- help: consider removing `'static`: `&Foo`

error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:20:19
|
20 | const VAR_SLICE: &'static [u8] = b"Test constant #1"; // ERROR Consider removing 'static.
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^----- help: consider removing `'static`: `&[u8]`

error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:22:19
|
22 | const VAR_TUPLE: &'static (u8, u8) = &(1, 2); // ERROR Consider removing 'static.
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^--------- help: consider removing `'static`: `&(u8, u8)`

error: Constants have by default a `'static` lifetime
--> $DIR/const_static_lifetime.rs:24:19
|
24 | const VAR_ARRAY: &'static [u8; 1] = b"T"; // ERROR Consider removing 'static.
| ^^^^^^^ help: consider removing `'static`
| -^^^^^^^-------- help: consider removing `'static`: `&[u8; 1]`