2019-11-11 04:39:52 -06:00
|
|
|
// 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() {
|
2019-12-14 20:50:55 -06:00
|
|
|
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 identifier `a` is bound more than once in the same pattern
|
|
|
|
=> {}
|
|
|
|
}
|
|
|
|
|
2019-11-11 04:39:52 -06:00
|
|
|
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 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
|
|
|
|
}
|