mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-15 01:17:16 +00:00
Merge pull request #2232 from rust-lang-nursery/fixup-const-static-lifetime
Fixup "const static lifetime" lint for non-path types
This commit is contained in:
commit
acc81cf921
5 changed files with 56 additions and 16 deletions
|
@ -70,8 +70,9 @@ Please document your lint with a doc comment akin to the following:
|
|||
|
||||
Clippy uses UI tests. UI tests check that the output of the compiler is exactly as expected.
|
||||
Of course there's little sense in writing the output yourself or copying it around.
|
||||
Therefore you can simply run `tests/ui/update-all-references.sh` and check whether
|
||||
the output looks as you expect with `git diff`. Commit all `*.stderr` files, too.
|
||||
Therefore you can simply run `tests/ui/update-all-references.sh` (after running
|
||||
`cargo test`) and check whether the output looks as you expect with `git diff`. Commit all
|
||||
`*.stderr` files, too.
|
||||
|
||||
### Testing manually
|
||||
|
||||
|
|
|
@ -48,20 +48,23 @@ impl StaticConst {
|
|||
TyKind::Rptr(ref optional_lifetime, ref borrow_type) => {
|
||||
// Match the 'static lifetime
|
||||
if let Some(lifetime) = *optional_lifetime {
|
||||
if let TyKind::Path(_, _) = borrow_type.ty.node {
|
||||
// Verify that the path is a str
|
||||
if lifetime.ident.name == "'static" {
|
||||
let mut sug: String = String::new();
|
||||
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);
|
||||
},
|
||||
);
|
||||
match borrow_type.ty.node {
|
||||
TyKind::Path(..) | TyKind::Slice(..) | TyKind::Array(..) |
|
||||
TyKind::Tup(..) => {
|
||||
if lifetime.ident.name == "'static" {
|
||||
let mut sug: String = String::new();
|
||||
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);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
self.visit_type(&*borrow_type.ty, cx);
|
||||
|
|
|
@ -17,6 +17,12 @@ 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.
|
||||
|
||||
fn main() {
|
||||
let false_positive: &'static str = "test";
|
||||
println!("{}", VAR_ONE);
|
||||
|
|
|
@ -24,6 +24,12 @@ error: Constants have by default a `'static` lifetime
|
|||
10 | const VAR_FOUR: (&str, (&str, &'static str), &'static str) = ("on", ("th", "th"), "on"); // ERROR Consider removing 'static
|
||||
| ^^^^^^^ help: consider removing `'static`
|
||||
|
||||
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`
|
||||
|
||||
error: Constants have by default a `'static` lifetime
|
||||
--> $DIR/const_static_lifetime.rs:12:30
|
||||
|
|
||||
|
@ -36,6 +42,12 @@ error: Constants have by default a `'static` lifetime
|
|||
14 | const VAR_SIX: &'static u8 = &5;
|
||||
| ^^^^^^^ help: consider removing `'static`
|
||||
|
||||
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`
|
||||
|
||||
error: Constants have by default a `'static` lifetime
|
||||
--> $DIR/const_static_lifetime.rs:16:39
|
||||
|
|
||||
|
@ -48,3 +60,21 @@ error: Constants have by default a `'static` lifetime
|
|||
18 | const VAR_HEIGHT: &'static Foo = &Foo {};
|
||||
| ^^^^^^^ help: consider removing `'static`
|
||||
|
||||
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`
|
||||
|
||||
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`
|
||||
|
||||
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`
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#
|
||||
# See all `update-references.sh`, if you just want to update a single test.
|
||||
|
||||
if [[ "$1" == "--help" || "$1" == "-h" || "$1" == "" ]]; then
|
||||
if [[ "$1" == "--help" || "$1" == "-h" ]]; then
|
||||
echo "usage: $0"
|
||||
fi
|
||||
|
||||
|
|
Loading…
Reference in a new issue