Test that _ @ subpat is syntactically rejected.

This commit is contained in:
Mazdak Farrokhzad 2019-12-15 04:40:26 +01:00
parent e39abcfad9
commit c37bd26eaa
2 changed files with 59 additions and 0 deletions

View File

@ -0,0 +1,16 @@
// Here we check that `_ @ sub` is syntactically invalid
// and comes with a nice actionable suggestion.
fn main() {}
#[cfg(FALSE)]
fn wild_before_at_is_bad_syntax() {
let _ @ a = 0;
//~^ ERROR pattern on wrong side of `@`
let _ @ ref a = 0;
//~^ ERROR pattern on wrong side of `@`
let _ @ ref mut a = 0;
//~^ ERROR pattern on wrong side of `@`
let _ @ (a, .., b) = (0, 1, 2, 3);
//~^ ERROR left-hand side of `@` must be a binding
}

View File

@ -0,0 +1,43 @@
error: pattern on wrong side of `@`
--> $DIR/wild-before-at-syntactically-rejected.rs:8:9
|
LL | let _ @ a = 0;
| -^^^-
| | |
| | binding on the right, should be on the left
| pattern on the left, should be on the right
| help: switch the order: `a @ _`
error: pattern on wrong side of `@`
--> $DIR/wild-before-at-syntactically-rejected.rs:10:9
|
LL | let _ @ ref a = 0;
| -^^^-----
| | |
| | binding on the right, should be on the left
| pattern on the left, should be on the right
| help: switch the order: `ref a @ _`
error: pattern on wrong side of `@`
--> $DIR/wild-before-at-syntactically-rejected.rs:12:9
|
LL | let _ @ ref mut a = 0;
| -^^^---------
| | |
| | binding on the right, should be on the left
| pattern on the left, should be on the right
| help: switch the order: `ref mut a @ _`
error: left-hand side of `@` must be a binding
--> $DIR/wild-before-at-syntactically-rejected.rs:14:9
|
LL | let _ @ (a, .., b) = (0, 1, 2, 3);
| -^^^----------
| | |
| | also a pattern
| interpreted as a pattern, not a binding
|
= note: bindings are `x`, `mut x`, `ref x`, and `ref mut x`
error: aborting due to 4 previous errors