// Can't use empty braced struct as enum pattern

// aux-build:empty-struct.rs

extern crate empty_struct;
use empty_struct::*;

struct Empty1 {}

fn main() {
    let e1 = Empty1 {};
    let xe1 = XEmpty1 {};

    match e1 {
        Empty1() => () //~ ERROR expected tuple struct or tuple variant, found struct `Empty1`
    }
    match xe1 {
        XEmpty1() => () //~ ERROR expected tuple struct or tuple variant, found struct `XEmpty1`
    }
    match e1 {
        Empty1(..) => () //~ ERROR expected tuple struct or tuple variant, found struct `Empty1`
    }
    match xe1 {
        XEmpty1(..) => () //~ ERROR expected tuple struct or tuple variant, found struct `XEmpty1`
    }
}
