30 lines
1.3 KiB
Rust
30 lines
1.3 KiB
Rust
// Test that `binding @ subpat` acts as a product context with respect to duplicate binding names.
|
|
// The code that is tested here lives in resolve (see `resolve_pattern_inner`).
|
|
|
|
|
|
fn main() {
|
|
fn f(a @ a @ a: ()) {}
|
|
//~^ ERROR identifier `a` is bound more than once in this parameter list
|
|
//~| ERROR identifier `a` is bound more than once in this parameter list
|
|
|
|
match Ok(0) {
|
|
Ok(a @ b @ a)
|
|
//~^ ERROR identifier `a` is bound more than once in the same pattern
|
|
| Err(a @ b @ a) //~ ERROR cannot assign twice to immutable variable `a`
|
|
//~^ ERROR identifier `a` is bound more than once in the same pattern
|
|
=> {}
|
|
}
|
|
|
|
let a @ a @ a = ();
|
|
//~^ ERROR identifier `a` is bound more than once in the same pattern
|
|
//~| ERROR identifier `a` is bound more than once in the same pattern
|
|
let ref a @ ref a = ();
|
|
//~^ ERROR identifier `a` is bound more than once in the same pattern
|
|
let ref mut a @ ref mut a = (); //~ ERROR cannot borrow value as mutable more than once at a time
|
|
//~^ ERROR identifier `a` is bound more than once in the same pattern
|
|
|
|
let a @ (Ok(a) | Err(a)) = Ok(());
|
|
//~^ ERROR identifier `a` is bound more than once in the same pattern
|
|
//~| ERROR identifier `a` is bound more than once in the same pattern
|
|
}
|