use std::f32;

#[derive(PartialEq)]
struct Foo {
    x: u32
}

const FOO: Foo = Foo { x: 0 };

fn main() {
    let y = Foo { x: 1 };
    match y {
        FOO => { }
        //~^ ERROR must be annotated with `#[derive(PartialEq, Eq)]`
        //~| ERROR must be annotated with `#[derive(PartialEq, Eq)]`
        _ => { }
    }

    let x = 0.0;
    match x {
        f32::INFINITY => { }
        //~^ WARNING floating-point types cannot be used in patterns
        //~| WARNING will become a hard error in a future release
        //~| WARNING floating-point types cannot be used in patterns
        //~| WARNING this was previously accepted by the compiler but is being phased out
        _ => { }
    }
}
