// compile-pass

#![allow(unreachable_patterns)]
#![allow(unused_variables)]
#![warn(unused_parens)]

fn main() {
    match 1 {
        (_) => {}         //~ WARNING: unnecessary parentheses around pattern
        (y) => {}         //~ WARNING: unnecessary parentheses around pattern
        (ref r) => {}     //~ WARNING: unnecessary parentheses around pattern
        (e @ 1..=2) => {} //~ WARNING: unnecessary parentheses around outer pattern
        (1..=2) => {}     // Non ambiguous range pattern should not warn
        e @ (3..=4) => {} // Non ambiguous range pattern should not warn
    }

    match &1 {
        (e @ &(1...2)) => {} //~ WARNING: unnecessary parentheses around outer pattern
        &(_) => {}           //~ WARNING: unnecessary parentheses around pattern
        e @ &(1...2) => {}   // Ambiguous range pattern should not warn
        &(1..=2) => {}       // Ambiguous range pattern should not warn
    }

    match &1 {
        e @ &(1...2) | e @ &(3..=4) => {} // Complex ambiguous pattern should not warn
        &_ => {}
    }
}
