Extend #[must_use] lint to arrays
This commit is contained in:
parent
400fd6055f
commit
76f5b50716
3 changed files with 127 additions and 12 deletions
47
src/test/ui/lint/must_use-array.rs
Normal file
47
src/test/ui/lint/must_use-array.rs
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#![deny(unused_must_use)]
|
||||
|
||||
#[must_use]
|
||||
struct S;
|
||||
|
||||
struct A;
|
||||
|
||||
#[must_use]
|
||||
trait T {}
|
||||
|
||||
impl T for A {}
|
||||
|
||||
fn empty() -> [S; 0] {
|
||||
[]
|
||||
}
|
||||
|
||||
fn singleton() -> [S; 1] {
|
||||
[S]
|
||||
}
|
||||
|
||||
fn many() -> [S; 4] {
|
||||
[S, S, S, S]
|
||||
}
|
||||
|
||||
fn array_of_impl_trait() -> [impl T; 2] {
|
||||
[A, A]
|
||||
}
|
||||
|
||||
fn impl_array() -> [(u8, Box<dyn T>); 2] {
|
||||
[(0, Box::new(A)), (0, Box::new(A))]
|
||||
}
|
||||
|
||||
fn array_of_arrays_of_arrays() -> [[[S; 1]; 2]; 1] {
|
||||
[[[S], [S]]]
|
||||
}
|
||||
|
||||
fn main() {
|
||||
empty(); // ok
|
||||
singleton(); //~ ERROR unused array of `S` that must be used
|
||||
many(); //~ ERROR unused array of `S` that must be used
|
||||
([S], 0, ()); //~ ERROR unused array of `S` in tuple element 0 that must be used
|
||||
array_of_impl_trait(); //~ ERROR unused array of implementers of `T` that must be used
|
||||
impl_array();
|
||||
//~^ ERROR unused array of boxed `T` trait objects in tuple element 1 that must be used
|
||||
array_of_arrays_of_arrays();
|
||||
//~^ ERROR unused array of arrays of arrays of `S` that must be used
|
||||
}
|
||||
44
src/test/ui/lint/must_use-array.stderr
Normal file
44
src/test/ui/lint/must_use-array.stderr
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
error: unused array of `S` that must be used
|
||||
--> $DIR/must_use-array.rs:39:5
|
||||
|
|
||||
LL | singleton();
|
||||
| ^^^^^^^^^^^^
|
||||
|
|
||||
note: lint level defined here
|
||||
--> $DIR/must_use-array.rs:1:9
|
||||
|
|
||||
LL | #![deny(unused_must_use)]
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
error: unused array of `S` that must be used
|
||||
--> $DIR/must_use-array.rs:40:5
|
||||
|
|
||||
LL | many();
|
||||
| ^^^^^^^
|
||||
|
||||
error: unused array of `S` in tuple element 0 that must be used
|
||||
--> $DIR/must_use-array.rs:41:6
|
||||
|
|
||||
LL | ([S], 0, ());
|
||||
| ^^^
|
||||
|
||||
error: unused array of implementers of `T` that must be used
|
||||
--> $DIR/must_use-array.rs:42:5
|
||||
|
|
||||
LL | array_of_impl_trait();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: unused array of boxed `T` trait objects in tuple element 1 that must be used
|
||||
--> $DIR/must_use-array.rs:43:5
|
||||
|
|
||||
LL | impl_array();
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: unused array of arrays of arrays of `S` that must be used
|
||||
--> $DIR/must_use-array.rs:45:5
|
||||
|
|
||||
LL | array_of_arrays_of_arrays();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue