about summary refs log tree commit diff
path: root/tests/ui/parser
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2023-11-06 21:06:20 +0000
committerEsteban Küber <esteban@kuber.com.ar>2023-11-29 18:47:31 +0000
commited084a93433d214edae3ee739444cbd442baf6fc (patch)
tree28af6542a71aacf116e5a6b51eb6c3166497ef29 /tests/ui/parser
parent44fd3b4d4648c9ea2dfa052fe5d3dbb2dfb4f492 (diff)
downloadrust-ed084a93433d214edae3ee739444cbd442baf6fc.tar.gz
rust-ed084a93433d214edae3ee739444cbd442baf6fc.zip
When parsing patterns, bubble all errors except reserved idents that aren't likely to appear in for head or match arm
Diffstat (limited to 'tests/ui/parser')
-rw-r--r--tests/ui/parser/mut-patterns.rs2
-rw-r--r--tests/ui/parser/mut-patterns.stderr40
2 files changed, 40 insertions, 2 deletions
diff --git a/tests/ui/parser/mut-patterns.rs b/tests/ui/parser/mut-patterns.rs
index 8b83d6ab2f8..f2d2df0af29 100644
--- a/tests/ui/parser/mut-patterns.rs
+++ b/tests/ui/parser/mut-patterns.rs
@@ -27,7 +27,7 @@ pub fn main() {
     struct r#yield(u8, u8);
     let mut mut yield(become, await) = r#yield(0, 0);
     //~^ ERROR `mut` on a binding may not be repeated
-    //~| ERROR `mut` must be attached to each individual binding
+    //~| ERROR `mut` must be followed by a named binding
     //~| ERROR expected identifier, found reserved keyword `yield`
     //~| ERROR expected identifier, found reserved keyword `become`
     //~| ERROR expected identifier, found keyword `await`
diff --git a/tests/ui/parser/mut-patterns.stderr b/tests/ui/parser/mut-patterns.stderr
index d91440d7859..6559cf09cdf 100644
--- a/tests/ui/parser/mut-patterns.stderr
+++ b/tests/ui/parser/mut-patterns.stderr
@@ -72,5 +72,43 @@ help: escape `become` to use it as an identifier
 LL |     let mut mut yield(r#become, await) = r#yield(0, 0);
    |                       ++
 
-error: aborting due to 9 previous errors
+error: expected identifier, found keyword `await`
+  --> $DIR/mut-patterns.rs:28:31
+   |
+LL |     let mut mut yield(become, await) = r#yield(0, 0);
+   |                               ^^^^^ expected identifier, found keyword
+   |
+help: escape `await` to use it as an identifier
+   |
+LL |     let mut mut yield(become, r#await) = r#yield(0, 0);
+   |                               ++
+
+error: `mut` must be followed by a named binding
+  --> $DIR/mut-patterns.rs:28:9
+   |
+LL |     let mut mut yield(become, await) = r#yield(0, 0);
+   |         ^^^^^^^^ help: remove the `mut` prefix
+   |
+   = note: `mut` may be followed by `variable` and `variable @ pattern`
+
+error: `mut` must be attached to each individual binding
+  --> $DIR/mut-patterns.rs:37:9
+   |
+LL |     let mut W(mut a, W(b, W(ref c, W(d, B { box f }))))
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add `mut` to each binding: `W(mut a, W(mut b, W(ref c, W(mut d, B { box mut f }))))`
+   |
+   = note: `mut` may be followed by `variable` and `variable @ pattern`
+
+error: expected identifier, found `x`
+  --> $DIR/mut-patterns.rs:44:21
+   |
+LL |             let mut $p = 0;
+   |                     ^^ expected identifier
+...
+LL |     foo!(x);
+   |     ------- in this macro invocation
+   |
+   = note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 13 previous errors