// 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)] _ => {} } //~^^ WARN lint level must be set on the whole match match val { NonExhaustiveEnum::Unit => {} NonExhaustiveEnum::Tuple(_) => {} #[cfg_attr(lint, deny(non_exhaustive_omitted_patterns))] _ => {} } //[lint]~^^ WARN lint level must be set on the whole match match val { NonExhaustiveEnum::Unit => {} NonExhaustiveEnum::Tuple(_) => {} #[cfg_attr(lint, warn(non_exhaustive_omitted_patterns))] _ => {} } //[lint]~^^ WARN lint level must be set on the whole match }