struct S(i32, f32);
enum E {
    S(i32, f32),
}
struct Point4(i32, i32, i32, i32);

fn main() {
    match S(0, 1.0) {
        S(x) => {}
        //~^ ERROR this pattern has 1 field, but the corresponding tuple struct has 2 fields
        //~| HELP use `_` to explicitly ignore each field
    }
    match S(0, 1.0) {
        S(_) => {}
        //~^ ERROR this pattern has 1 field, but the corresponding tuple struct has 2 fields
        //~| HELP use `_` to explicitly ignore each field
        //~| HELP use `..` to ignore all fields
    }
    match S(0, 1.0) {
        S() => {}
        //~^ ERROR this pattern has 0 fields, but the corresponding tuple struct has 2 fields
        //~| HELP use `_` to explicitly ignore each field
        //~| HELP use `..` to ignore all fields

        // Test non-standard formatting
        S () => {}
        //~^ ERROR this pattern has 0 fields, but the corresponding tuple struct has 2 fields
        //~| HELP use `_` to explicitly ignore each field
        //~| HELP use `..` to ignore all fields
    }

    match E::S(0, 1.0) {
        E::S(x) => {}
        //~^ ERROR this pattern has 1 field, but the corresponding tuple variant has 2 fields
        //~| HELP use `_` to explicitly ignore each field
    }
    match E::S(0, 1.0) {
        E::S(_) => {}
        //~^ ERROR this pattern has 1 field, but the corresponding tuple variant has 2 fields
        //~| HELP use `_` to explicitly ignore each field
        //~| HELP use `..` to ignore all fields
    }
    match E::S(0, 1.0) {
        E::S() => {}
        //~^ ERROR this pattern has 0 fields, but the corresponding tuple variant has 2 fields
        //~| HELP use `_` to explicitly ignore each field
        //~| HELP use `..` to ignore all fields

        // Test non-standard formatting
        E::S () => {}
        //~^ ERROR this pattern has 0 fields, but the corresponding tuple variant has 2 fields
        //~| HELP use `_` to explicitly ignore each field
        //~| HELP use `..` to ignore all fields
    }
    match E::S(0, 1.0) {
        E::S => {}
        //~^ ERROR expected unit struct, unit variant or constant, found tuple variant `E::S`
        //~| HELP use the tuple variant pattern syntax instead
    }

    match Point4(0, 1, 2, 3) {
        Point4(   a   ,     _    ) => {}
        //~^ ERROR this pattern has 2 fields, but the corresponding tuple struct has 4 fields
        //~| HELP use `_` to explicitly ignore each field
        //~| HELP use `..` to ignore the rest of the fields
    }
}
