rust/tests/ui/rfcs/rfc-2008-non-exhaustive/omitted-patterns-dont-lint-on-arm.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

54 lines
1.5 KiB
Rust
Raw Normal View History

2023-10-23 11:27:33 -05:00
//@ revisions: normal lint
// Test that putting the lint level on a match arm emits a warning, as this was previously
// meaningful and is no longer.
#![feature(non_exhaustive_omitted_patterns_lint)]
//@ aux-build:enums.rs
extern crate enums;
use enums::NonExhaustiveEnum;
fn main() {
let val = NonExhaustiveEnum::Unit;
#[deny(non_exhaustive_omitted_patterns)]
match val {
//~^ ERROR some variants are not matched explicitly
NonExhaustiveEnum::Unit => {}
NonExhaustiveEnum::Tuple(_) => {}
_ => {}
}
#[cfg_attr(lint, deny(non_exhaustive_omitted_patterns))]
match val {
//[lint]~^ ERROR some variants are not matched explicitly
NonExhaustiveEnum::Unit => {}
NonExhaustiveEnum::Tuple(_) => {}
_ => {}
}
match val {
NonExhaustiveEnum::Unit => {}
NonExhaustiveEnum::Tuple(_) => {}
#[deny(non_exhaustive_omitted_patterns)]
_ => {}
2023-10-23 11:27:33 -05:00
}
//~^^ WARN lint level must be set on the whole match
2023-10-23 11:27:33 -05:00
match val {
NonExhaustiveEnum::Unit => {}
NonExhaustiveEnum::Tuple(_) => {}
#[cfg_attr(lint, deny(non_exhaustive_omitted_patterns))]
_ => {}
2023-10-23 11:27:33 -05:00
}
//[lint]~^^ WARN lint level must be set on the whole match
2023-10-23 11:27:33 -05:00
match val {
NonExhaustiveEnum::Unit => {}
NonExhaustiveEnum::Tuple(_) => {}
#[cfg_attr(lint, warn(non_exhaustive_omitted_patterns))]
_ => {}
2023-10-23 11:27:33 -05:00
}
//[lint]~^^ WARN lint level must be set on the whole match
2023-10-23 11:27:33 -05:00
}