#![deny(unreachable_patterns)]

#[non_exhaustive]
pub enum NonExhaustiveEnum {
    Unit,
    //~^ not covered
    Tuple(u32),
    //~^ not covered
    Struct { field: u32 }
    //~^ not covered
}

pub enum NormalEnum {
    Unit,
    //~^ not covered
    Tuple(u32),
    //~^ not covered
    Struct { field: u32 }
    //~^ not covered
}

#[non_exhaustive]
pub enum EmptyNonExhaustiveEnum {}

fn empty_non_exhaustive(x: EmptyNonExhaustiveEnum) {
    match x {}
    match x {
        _ => {} // not detected as unreachable
    }
}

fn main() {
    match NonExhaustiveEnum::Unit {}
    //~^ ERROR `Unit`, `Tuple(_)` and `Struct { .. }` not covered [E0004]
    match NormalEnum::Unit {}
    //~^ ERROR `Unit`, `Tuple(_)` and `Struct { .. }` not covered [E0004]
}
