//@ run-rustfix

#![allow(nonstandard_style, unused_variables, unused_mut)]
#![deny(non_shorthand_field_patterns)]

struct Foo {
    x: isize,
    y: isize,
}

fn main() {
    {
        let Foo {
            x, //~ ERROR the `x:` in this pattern is redundant
            ref y, //~ ERROR the `y:` in this pattern is redundant
        } = Foo { x: 0, y: 0 };

        let Foo {
            x,
            ref y,
        } = Foo { x: 0, y: 0 };
    }

    {
        const x: isize = 1;

        match (Foo { x: 1, y: 1 }) {
            Foo { x: x, ..} => {},
            _ => {},
        }
    }

    {
        struct Bar {
            x: x,
        }

        struct x;

        match (Bar { x: x }) {
            Bar { x: x } => {},
        }
    }

    {
        struct Bar {
            x: Foo,
        }

        enum Foo { x }

        match (Bar { x: Foo::x }) {
            Bar { x: Foo::x } => {},
        }
    }

    {
        struct Baz {
            x: isize,
            y: isize,
            z: isize,
        }

        let Baz {
            mut x, //~ ERROR the `x:` in this pattern is redundant
            ref y, //~ ERROR the `y:` in this pattern is redundant
            ref mut z, //~ ERROR the `z:` in this pattern is redundant
        } = Baz { x: 0, y: 0, z: 0 };
    }
}
