// Test that `...X` range-to patterns are syntactically invalid.
//
// See https://github.com/rust-lang/rust/pull/67258#issuecomment-565656155
// for the reason why. To summarize, we might want to introduce `...expr` as
// an expression form for splatting (or "untupling") in an expression context.
// While there is no syntactic ambiguity with `...X` in a pattern context,
// there's a potential confusion factor here, and we would prefer to keep patterns
// and expressions in-sync. As such, we do not allow `...X` in patterns either.

fn main() {}

#[cfg(FALSE)]
fn syntax() {
    match scrutinee {
        ...X => {} //~ ERROR range-to patterns with `...` are not allowed
        ...0 => {} //~ ERROR range-to patterns with `...` are not allowed
        ...'a' => {} //~ ERROR range-to patterns with `...` are not allowed
        ...0.0f32 => {} //~ ERROR range-to patterns with `...` are not allowed
    }
}

fn syntax2() {
    macro_rules! mac {
        ($e:expr) => {
            let ...$e; //~ ERROR range-to patterns with `...` are not allowed
            //~^ ERROR refutable pattern in local binding
        }
    }

    mac!(0);
}
