// Can't use unit struct as enum pattern

// aux-build:empty-struct.rs

extern crate empty_struct;
use empty_struct::*;

struct Empty2();

enum E {
    Empty4()
}

// remove attribute after warning cycle and promoting warnings to errors
fn main() {
    let e2 = Empty2();
    let e4 = E::Empty4();
    let xe6 = XEmpty6();
    let xe5 = XE::XEmpty5();

    match e2 {
        Empty2 => () //~ ERROR match bindings cannot shadow tuple structs
    }
    match xe6 {
        XEmpty6 => () //~ ERROR match bindings cannot shadow tuple structs
    }

    match e4 {
        E::Empty4 => ()
        //~^ ERROR expected unit struct, unit variant or constant, found tuple variant `E::Empty4`
    }
    match xe5 {
        XE::XEmpty5 => (),
        //~^ ERROR expected unit struct, unit variant or constant, found tuple variant `XE::XEmpty5`
        _ => {},
    }
}
