diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-06-30 21:57:28 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-30 21:57:28 +0200 |
| commit | 2b313b1d321797e7c161c40b102c963cf53dd7ac (patch) | |
| tree | 272ea627ebd4991252d799390669e20d9e10bb59 /src/test/ui | |
| parent | c779f4e89c0abe949195a28418be11fddf77b5a3 (diff) | |
| parent | 76f5b50716d609d09e53cf537be54a42bd0f007d (diff) | |
| download | rust-2b313b1d321797e7c161c40b102c963cf53dd7ac.tar.gz rust-2b313b1d321797e7c161c40b102c963cf53dd7ac.zip | |
Rollup merge of #62235 - varkor:must_use-adt-components, r=Centril
Extend the `#[must_use]` lint to arrays Based on top of https://github.com/rust-lang/rust/pull/62228. r? @Centril
Diffstat (limited to 'src/test/ui')
| -rw-r--r-- | src/test/ui/lint/must_use-array.rs | 47 | ||||
| -rw-r--r-- | src/test/ui/lint/must_use-array.stderr | 44 |
2 files changed, 91 insertions, 0 deletions
diff --git a/src/test/ui/lint/must_use-array.rs b/src/test/ui/lint/must_use-array.rs new file mode 100644 index 00000000000..97825dd2f6c --- /dev/null +++ b/src/test/ui/lint/must_use-array.rs @@ -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 +} diff --git a/src/test/ui/lint/must_use-array.stderr b/src/test/ui/lint/must_use-array.stderr new file mode 100644 index 00000000000..a6dbd8e93d4 --- /dev/null +++ b/src/test/ui/lint/must_use-array.stderr @@ -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 + |
