mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-04 19:12:50 +00:00
Add and prepare tests
This commit is contained in:
parent
272c914bdd
commit
2d45df3caa
@ -9,7 +9,9 @@
|
||||
|
||||
fn main() {
|
||||
enum Foo {
|
||||
A, B, C,
|
||||
A,
|
||||
B,
|
||||
C,
|
||||
}
|
||||
|
||||
#[allow(non_exhaustive_omitted_patterns)]
|
||||
@ -23,12 +25,14 @@ fn main() {
|
||||
}
|
||||
//~^^^^ ERROR non-exhaustive patterns: `Foo::C` not covered
|
||||
|
||||
#[warn(non_exhaustive_omitted_patterns)]
|
||||
//~^ WARNING unknown lint: `non_exhaustive_omitted_patterns`
|
||||
//~| WARNING unknown lint: `non_exhaustive_omitted_patterns`
|
||||
//~| WARNING unknown lint: `non_exhaustive_omitted_patterns`
|
||||
//~| WARNING unknown lint: `non_exhaustive_omitted_patterns`
|
||||
match Foo::A {
|
||||
Foo::A => {}
|
||||
Foo::B => {}
|
||||
#[warn(non_exhaustive_omitted_patterns)]
|
||||
_ => {}
|
||||
}
|
||||
//~^^^ WARNING unknown lint: `non_exhaustive_omitted_patterns`
|
||||
//~| WARNING unknown lint: `non_exhaustive_omitted_patterns`
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ LL | #![allow(non_exhaustive_omitted_patterns)]
|
||||
= help: add `#![feature(non_exhaustive_omitted_patterns_lint)]` to the crate attributes to enable
|
||||
|
||||
warning: unknown lint: `non_exhaustive_omitted_patterns`
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:15:5
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:17:5
|
||||
|
|
||||
LL | #[allow(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -30,7 +30,7 @@ LL | #[allow(non_exhaustive_omitted_patterns)]
|
||||
= help: add `#![feature(non_exhaustive_omitted_patterns_lint)]` to the crate attributes to enable
|
||||
|
||||
warning: unknown lint: `non_exhaustive_omitted_patterns`
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:15:5
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:17:5
|
||||
|
|
||||
LL | #[allow(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -41,15 +41,26 @@ LL | #[allow(non_exhaustive_omitted_patterns)]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: unknown lint: `non_exhaustive_omitted_patterns`
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:29:9
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:28:5
|
||||
|
|
||||
LL | #[warn(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #[warn(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the `non_exhaustive_omitted_patterns` lint is unstable
|
||||
= note: see issue #89554 <https://github.com/rust-lang/rust/issues/89554> for more information
|
||||
= help: add `#![feature(non_exhaustive_omitted_patterns_lint)]` to the crate attributes to enable
|
||||
|
||||
warning: unknown lint: `non_exhaustive_omitted_patterns`
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:28:5
|
||||
|
|
||||
LL | #[warn(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the `non_exhaustive_omitted_patterns` lint is unstable
|
||||
= note: see issue #89554 <https://github.com/rust-lang/rust/issues/89554> for more information
|
||||
= help: add `#![feature(non_exhaustive_omitted_patterns_lint)]` to the crate attributes to enable
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: unknown lint: `non_exhaustive_omitted_patterns`
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:3:1
|
||||
|
|
||||
@ -73,7 +84,7 @@ LL | #![allow(non_exhaustive_omitted_patterns)]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: unknown lint: `non_exhaustive_omitted_patterns`
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:15:5
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:17:5
|
||||
|
|
||||
LL | #[allow(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -84,7 +95,7 @@ LL | #[allow(non_exhaustive_omitted_patterns)]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: unknown lint: `non_exhaustive_omitted_patterns`
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:15:5
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:17:5
|
||||
|
|
||||
LL | #[allow(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -95,10 +106,21 @@ LL | #[allow(non_exhaustive_omitted_patterns)]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: unknown lint: `non_exhaustive_omitted_patterns`
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:29:9
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:28:5
|
||||
|
|
||||
LL | #[warn(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #[warn(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the `non_exhaustive_omitted_patterns` lint is unstable
|
||||
= note: see issue #89554 <https://github.com/rust-lang/rust/issues/89554> for more information
|
||||
= help: add `#![feature(non_exhaustive_omitted_patterns_lint)]` to the crate attributes to enable
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: unknown lint: `non_exhaustive_omitted_patterns`
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:28:5
|
||||
|
|
||||
LL | #[warn(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the `non_exhaustive_omitted_patterns` lint is unstable
|
||||
= note: see issue #89554 <https://github.com/rust-lang/rust/issues/89554> for more information
|
||||
@ -106,18 +128,19 @@ LL | #[warn(non_exhaustive_omitted_patterns)]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0004]: non-exhaustive patterns: `Foo::C` not covered
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:20:11
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:22:11
|
||||
|
|
||||
LL | match Foo::A {
|
||||
| ^^^^^^ pattern `Foo::C` not covered
|
||||
|
|
||||
note: `Foo` defined here
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:12:15
|
||||
--> $DIR/feature-gate-non_exhaustive_omitted_patterns_lint.rs:14:9
|
||||
|
|
||||
LL | enum Foo {
|
||||
| ---
|
||||
LL | A, B, C,
|
||||
| ^ not covered
|
||||
...
|
||||
LL | C,
|
||||
| ^ not covered
|
||||
= note: the matched value is of type `Foo`
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
|
|
||||
@ -125,6 +148,6 @@ LL ~ Foo::B => {},
|
||||
LL + Foo::C => todo!()
|
||||
|
|
||||
|
||||
error: aborting due to previous error; 10 warnings emitted
|
||||
error: aborting due to previous error; 12 warnings emitted
|
||||
|
||||
For more information about this error, try `rustc --explain E0004`.
|
||||
|
@ -13,8 +13,8 @@ use enums::{
|
||||
EmptyNonExhaustiveEnum, NestedNonExhaustive, NonExhaustiveEnum, NonExhaustiveSingleVariant,
|
||||
VariantNonExhaustive,
|
||||
};
|
||||
use unstable::{UnstableEnum, OnlyUnstableEnum, UnstableStruct, OnlyUnstableStruct};
|
||||
use structs::{FunctionalRecord, MixedVisFields, NestedStruct, NormalStruct};
|
||||
use unstable::{OnlyUnstableEnum, OnlyUnstableStruct, UnstableEnum, UnstableStruct};
|
||||
|
||||
#[non_exhaustive]
|
||||
#[derive(Default)]
|
||||
@ -35,10 +35,10 @@ fn main() {
|
||||
let enumeration = Bar::A;
|
||||
|
||||
// Ok: this is a crate local non_exhaustive enum
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match enumeration {
|
||||
Bar::A => {}
|
||||
Bar::B => {}
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
_ => {}
|
||||
}
|
||||
|
||||
@ -51,38 +51,80 @@ fn main() {
|
||||
_ => {}
|
||||
}
|
||||
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match non_enum {
|
||||
NonExhaustiveEnum::Unit => {}
|
||||
NonExhaustiveEnum::Tuple(_) => {}
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
_ => {}
|
||||
}
|
||||
//~^^ some variants are not matched explicitly
|
||||
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match non_enum {
|
||||
NonExhaustiveEnum::Unit | NonExhaustiveEnum::Struct { .. } => {}
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
_ => {}
|
||||
}
|
||||
//~^^ some variants are not matched explicitly
|
||||
|
||||
let x = 5;
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match non_enum {
|
||||
NonExhaustiveEnum::Unit if x > 10 => {}
|
||||
NonExhaustiveEnum::Tuple(_) => {}
|
||||
NonExhaustiveEnum::Struct { .. } => {}
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
_ => {}
|
||||
}
|
||||
//~^^ some variants are not matched explicitly
|
||||
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match (non_enum, true) {
|
||||
(NonExhaustiveEnum::Unit, true) => {}
|
||||
(NonExhaustiveEnum::Tuple(_), false) => {}
|
||||
(NonExhaustiveEnum::Struct { .. }, false) => {}
|
||||
_ => {}
|
||||
}
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match (non_enum, true) {
|
||||
(NonExhaustiveEnum::Unit, true) => {}
|
||||
(NonExhaustiveEnum::Tuple(_), false) => {}
|
||||
_ => {}
|
||||
}
|
||||
//~^^ some variants are not matched explicitly
|
||||
|
||||
// FIXME(Nadrieril): asymmetrical behavior
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match (true, non_enum) {
|
||||
(true, NonExhaustiveEnum::Unit) => {}
|
||||
(false, NonExhaustiveEnum::Tuple(_)) => {}
|
||||
(false, NonExhaustiveEnum::Struct { .. }) => {}
|
||||
_ => {}
|
||||
}
|
||||
//~^^ some variants are not matched explicitly
|
||||
//~| some variants are not matched explicitly
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match (true, non_enum) {
|
||||
(true, NonExhaustiveEnum::Unit) => {}
|
||||
(false, NonExhaustiveEnum::Tuple(_)) => {}
|
||||
_ => {}
|
||||
}
|
||||
//~^^ some variants are not matched explicitly
|
||||
//~| some variants are not matched explicitly
|
||||
|
||||
// FIXME(Nadrieril): we should detect this
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match Some(non_enum) {
|
||||
Some(NonExhaustiveEnum::Unit) => {}
|
||||
Some(NonExhaustiveEnum::Tuple(_)) => {}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
// Ok: all covered and not `unreachable-patterns`
|
||||
#[deny(unreachable_patterns)]
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match non_enum {
|
||||
NonExhaustiveEnum::Unit => {}
|
||||
NonExhaustiveEnum::Tuple(_) => {}
|
||||
NonExhaustiveEnum::Struct { .. } => {}
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
_ => {}
|
||||
}
|
||||
|
||||
@ -132,15 +174,19 @@ fn main() {
|
||||
_ => {}
|
||||
}
|
||||
//~^^ some variants are not matched explicitly
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match &NonExhaustiveSingleVariant::A(true) {
|
||||
_ => {}
|
||||
}
|
||||
|
||||
// Ok: we don't lint on `if let` expressions
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
if let NonExhaustiveEnum::Tuple(_) = non_enum {}
|
||||
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match UnstableEnum::Stable {
|
||||
UnstableEnum::Stable => {}
|
||||
UnstableEnum::Stable2 => {}
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
_ => {}
|
||||
}
|
||||
//~^^ some variants are not matched explicitly
|
||||
|
@ -1,5 +1,5 @@
|
||||
warning: some fields are not explicitly listed
|
||||
--> $DIR/omitted-patterns.rs:102:9
|
||||
--> $DIR/omitted-patterns.rs:144:9
|
||||
|
|
||||
LL | VariantNonExhaustive::Bar { x, .. } => {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `y` not listed
|
||||
@ -7,13 +7,13 @@ LL | VariantNonExhaustive::Bar { x, .. } => {}
|
||||
= help: ensure that all fields are mentioned explicitly by adding the suggested fields
|
||||
= note: the pattern is of type `VariantNonExhaustive` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:99:12
|
||||
--> $DIR/omitted-patterns.rs:141:12
|
||||
|
|
||||
LL | #[warn(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: some fields are not explicitly listed
|
||||
--> $DIR/omitted-patterns.rs:107:9
|
||||
--> $DIR/omitted-patterns.rs:149:9
|
||||
|
|
||||
LL | let FunctionalRecord { first_field, second_field, .. } = FunctionalRecord::default();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `third_field` not listed
|
||||
@ -21,13 +21,13 @@ LL | let FunctionalRecord { first_field, second_field, .. } = FunctionalReco
|
||||
= help: ensure that all fields are mentioned explicitly by adding the suggested fields
|
||||
= note: the pattern is of type `FunctionalRecord` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:106:12
|
||||
--> $DIR/omitted-patterns.rs:148:12
|
||||
|
|
||||
LL | #[warn(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: some fields are not explicitly listed
|
||||
--> $DIR/omitted-patterns.rs:115:29
|
||||
--> $DIR/omitted-patterns.rs:157:29
|
||||
|
|
||||
LL | let NestedStruct { bar: NormalStruct { first_field, .. }, .. } = NestedStruct::default();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `second_field` not listed
|
||||
@ -35,13 +35,13 @@ LL | let NestedStruct { bar: NormalStruct { first_field, .. }, .. } = Nested
|
||||
= help: ensure that all fields are mentioned explicitly by adding the suggested fields
|
||||
= note: the pattern is of type `NormalStruct` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:114:12
|
||||
--> $DIR/omitted-patterns.rs:156:12
|
||||
|
|
||||
LL | #[warn(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: some fields are not explicitly listed
|
||||
--> $DIR/omitted-patterns.rs:115:9
|
||||
--> $DIR/omitted-patterns.rs:157:9
|
||||
|
|
||||
LL | let NestedStruct { bar: NormalStruct { first_field, .. }, .. } = NestedStruct::default();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `foo` not listed
|
||||
@ -50,7 +50,7 @@ LL | let NestedStruct { bar: NormalStruct { first_field, .. }, .. } = Nested
|
||||
= note: the pattern is of type `NestedStruct` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
|
||||
warning: some fields are not explicitly listed
|
||||
--> $DIR/omitted-patterns.rs:173:9
|
||||
--> $DIR/omitted-patterns.rs:219:9
|
||||
|
|
||||
LL | let OnlyUnstableStruct { unstable, .. } = OnlyUnstableStruct::new();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `unstable2` not listed
|
||||
@ -58,13 +58,13 @@ LL | let OnlyUnstableStruct { unstable, .. } = OnlyUnstableStruct::new();
|
||||
= help: ensure that all fields are mentioned explicitly by adding the suggested fields
|
||||
= note: the pattern is of type `OnlyUnstableStruct` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:172:12
|
||||
--> $DIR/omitted-patterns.rs:218:12
|
||||
|
|
||||
LL | #[warn(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: some fields are not explicitly listed
|
||||
--> $DIR/omitted-patterns.rs:181:9
|
||||
--> $DIR/omitted-patterns.rs:227:9
|
||||
|
|
||||
LL | let UnstableStruct { stable, stable2, .. } = UnstableStruct::default();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `unstable` not listed
|
||||
@ -72,7 +72,7 @@ LL | let UnstableStruct { stable, stable2, .. } = UnstableStruct::default();
|
||||
= help: ensure that all fields are mentioned explicitly by adding the suggested fields
|
||||
= note: the pattern is of type `UnstableStruct` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:180:12
|
||||
--> $DIR/omitted-patterns.rs:226:12
|
||||
|
|
||||
LL | #[warn(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -86,10 +86,10 @@ LL | _ => {}
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `NonExhaustiveEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:57:16
|
||||
--> $DIR/omitted-patterns.rs:54:12
|
||||
|
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:65:9
|
||||
@ -100,10 +100,10 @@ LL | _ => {}
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `NonExhaustiveEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:64:16
|
||||
--> $DIR/omitted-patterns.rs:62:12
|
||||
|
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:75:9
|
||||
@ -114,13 +114,73 @@ LL | _ => {}
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `NonExhaustiveEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:74:16
|
||||
--> $DIR/omitted-patterns.rs:70:12
|
||||
|
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:92:32
|
||||
--> $DIR/omitted-patterns.rs:90:9
|
||||
|
|
||||
LL | _ => {}
|
||||
| ^ pattern `NonExhaustiveEnum::Struct { .. }` not covered
|
||||
|
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `NonExhaustiveEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:86:12
|
||||
|
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:100:9
|
||||
|
|
||||
LL | _ => {}
|
||||
| ^ pattern `NonExhaustiveEnum::Unit` not covered
|
||||
|
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `NonExhaustiveEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:95:12
|
||||
|
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:100:9
|
||||
|
|
||||
LL | _ => {}
|
||||
| ^ patterns `NonExhaustiveEnum::Tuple(_)` and `NonExhaustiveEnum::Struct { .. }` not covered
|
||||
|
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `NonExhaustiveEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:108:9
|
||||
|
|
||||
LL | _ => {}
|
||||
| ^ patterns `NonExhaustiveEnum::Unit` and `NonExhaustiveEnum::Struct { .. }` not covered
|
||||
|
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `NonExhaustiveEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:104:12
|
||||
|
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:108:9
|
||||
|
|
||||
LL | _ => {}
|
||||
| ^ patterns `NonExhaustiveEnum::Tuple(_)` and `NonExhaustiveEnum::Struct { .. }` not covered
|
||||
|
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `NonExhaustiveEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:134:32
|
||||
|
|
||||
LL | NestedNonExhaustive::A(_) => {}
|
||||
| ^ patterns `NonExhaustiveEnum::Tuple(_)` and `NonExhaustiveEnum::Struct { .. }` not covered
|
||||
@ -128,13 +188,13 @@ LL | NestedNonExhaustive::A(_) => {}
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `NonExhaustiveEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:89:12
|
||||
--> $DIR/omitted-patterns.rs:131:12
|
||||
|
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:94:9
|
||||
--> $DIR/omitted-patterns.rs:136:9
|
||||
|
|
||||
LL | _ => {}
|
||||
| ^ pattern `NestedNonExhaustive::C` not covered
|
||||
@ -143,7 +203,7 @@ LL | _ => {}
|
||||
= note: the matched value is of type `NestedNonExhaustive` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:132:9
|
||||
--> $DIR/omitted-patterns.rs:174:9
|
||||
|
|
||||
LL | _ => {}
|
||||
| ^ pattern `NonExhaustiveSingleVariant::A(_)` not covered
|
||||
@ -151,13 +211,13 @@ LL | _ => {}
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `NonExhaustiveSingleVariant` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:130:12
|
||||
--> $DIR/omitted-patterns.rs:172:12
|
||||
|
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:144:9
|
||||
--> $DIR/omitted-patterns.rs:190:9
|
||||
|
|
||||
LL | _ => {}
|
||||
| ^ pattern `UnstableEnum::Unstable` not covered
|
||||
@ -165,13 +225,13 @@ LL | _ => {}
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `UnstableEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:143:16
|
||||
--> $DIR/omitted-patterns.rs:186:12
|
||||
|
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:168:9
|
||||
--> $DIR/omitted-patterns.rs:214:9
|
||||
|
|
||||
LL | _ => {}
|
||||
| ^ pattern `OnlyUnstableEnum::Unstable2` not covered
|
||||
@ -179,13 +239,13 @@ LL | _ => {}
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `OnlyUnstableEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:165:12
|
||||
--> $DIR/omitted-patterns.rs:211:12
|
||||
|
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0005]: refutable pattern in local binding
|
||||
--> $DIR/omitted-patterns.rs:194:9
|
||||
--> $DIR/omitted-patterns.rs:240:9
|
||||
|
|
||||
LL | let local_refutable @ NonExhaustiveEnum::Unit = NonExhaustiveEnum::Unit;
|
||||
| ^^^^^^^^^^^^^^^ pattern `_` not covered
|
||||
@ -199,7 +259,7 @@ LL | let local_refutable @ NonExhaustiveEnum::Unit = NonExhaustiveEnum::Unit
|
||||
| ++++++++++++++++
|
||||
|
||||
error: some variants are not matched explicitly
|
||||
--> $DIR/omitted-patterns.rs:202:9
|
||||
--> $DIR/omitted-patterns.rs:248:9
|
||||
|
|
||||
LL | _ => {}
|
||||
| ^ pattern `NonExhaustiveEnum::Struct { .. }` not covered
|
||||
@ -207,11 +267,11 @@ LL | _ => {}
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `NonExhaustiveEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/omitted-patterns.rs:198:12
|
||||
--> $DIR/omitted-patterns.rs:244:12
|
||||
|
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 10 previous errors; 6 warnings emitted
|
||||
error: aborting due to 15 previous errors; 6 warnings emitted
|
||||
|
||||
For more information about this error, try `rustc --explain E0005`.
|
||||
|
@ -6,20 +6,20 @@
|
||||
// aux-build:unstable.rs
|
||||
extern crate unstable;
|
||||
|
||||
use unstable::{UnstableEnum, OnlyUnstableEnum, UnstableStruct, OnlyUnstableStruct};
|
||||
use unstable::{OnlyUnstableEnum, OnlyUnstableStruct, UnstableEnum, UnstableStruct};
|
||||
|
||||
fn main() {
|
||||
// OK: this matches all the stable variants
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match UnstableEnum::Stable {
|
||||
UnstableEnum::Stable => {}
|
||||
UnstableEnum::Stable2 => {}
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
_ => {}
|
||||
}
|
||||
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
match UnstableEnum::Stable {
|
||||
UnstableEnum::Stable => {}
|
||||
#[deny(non_exhaustive_omitted_patterns)]
|
||||
_ => {}
|
||||
}
|
||||
//~^^ some variants are not matched explicitly
|
||||
|
@ -21,10 +21,10 @@ LL | _ => {}
|
||||
= help: ensure that all variants are matched explicitly by adding the suggested match arms
|
||||
= note: the matched value is of type `UnstableEnum` and the `non_exhaustive_omitted_patterns` attribute was found
|
||||
note: the lint level is defined here
|
||||
--> $DIR/stable-omitted-patterns.rs:22:16
|
||||
--> $DIR/stable-omitted-patterns.rs:20:12
|
||||
|
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #[deny(non_exhaustive_omitted_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to previous error; 1 warning emitted
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user