about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2023-11-06 19:50:00 +0000
committerEsteban Küber <esteban@kuber.com.ar>2023-11-16 16:58:41 +0000
commit8e7d0702a2dfc3e2fe4331af609cda9a92a4ef9b (patch)
tree4664eda4be09bd44d84b4ea9ea12f8286435348c
parent1c6bd0b12b7b0017beaa8e39c48f999d20c0ad8e (diff)
downloadrust-8e7d0702a2dfc3e2fe4331af609cda9a92a4ef9b.tar.gz
rust-8e7d0702a2dfc3e2fe4331af609cda9a92a4ef9b.zip
Add test for parens around match arm pattern and condition
-rw-r--r--tests/ui/parser/recover/recover-parens-around-match-arm-head.rs14
-rw-r--r--tests/ui/parser/recover/recover-parens-around-match-arm-head.stderr49
2 files changed, 63 insertions, 0 deletions
diff --git a/tests/ui/parser/recover/recover-parens-around-match-arm-head.rs b/tests/ui/parser/recover/recover-parens-around-match-arm-head.rs
new file mode 100644
index 00000000000..0c348e27e9a
--- /dev/null
+++ b/tests/ui/parser/recover/recover-parens-around-match-arm-head.rs
@@ -0,0 +1,14 @@
+fn main() {
+    let val = 42;
+    let x = match val {
+        (0 if true) => {
+        //~^ ERROR expected identifier, found keyword `if`
+        //~| ERROR expected one of `)`, `,`, `...`, `..=`, `..`, or `|`, found keyword `if`
+        //~| ERROR expected one of `)`, `,`, `@`, or `|`, found keyword `true`
+        //~| ERROR mismatched types
+            42u8
+        }
+        _ => 0u8,
+    };
+    let _y: u32 = x; //~ ERROR mismatched types
+}
\ No newline at end of file
diff --git a/tests/ui/parser/recover/recover-parens-around-match-arm-head.stderr b/tests/ui/parser/recover/recover-parens-around-match-arm-head.stderr
new file mode 100644
index 00000000000..6542f440e4b
--- /dev/null
+++ b/tests/ui/parser/recover/recover-parens-around-match-arm-head.stderr
@@ -0,0 +1,49 @@
+error: expected identifier, found keyword `if`
+  --> $DIR/recover-parens-around-match-arm-head.rs:4:12
+   |
+LL |         (0 if true) => {
+   |            ^^ expected identifier, found keyword
+
+error: expected one of `)`, `,`, `...`, `..=`, `..`, or `|`, found keyword `if`
+  --> $DIR/recover-parens-around-match-arm-head.rs:4:12
+   |
+LL |         (0 if true) => {
+   |           -^^ expected one of `)`, `,`, `...`, `..=`, `..`, or `|`
+   |           |
+   |           help: missing `,`
+
+error: expected one of `)`, `,`, `@`, or `|`, found keyword `true`
+  --> $DIR/recover-parens-around-match-arm-head.rs:4:15
+   |
+LL |         (0 if true) => {
+   |              -^^^^ expected one of `)`, `,`, `@`, or `|`
+   |              |
+   |              help: missing `,`
+
+error[E0308]: mismatched types
+  --> $DIR/recover-parens-around-match-arm-head.rs:4:9
+   |
+LL |     let x = match val {
+   |                   --- this expression has type `{integer}`
+LL |         (0 if true) => {
+   |         ^^^^^^^^^^^ expected integer, found `(_, _, _)`
+   |
+   = note: expected type `{integer}`
+             found tuple `(_, _, _)`
+
+error[E0308]: mismatched types
+  --> $DIR/recover-parens-around-match-arm-head.rs:13:19
+   |
+LL |     let _y: u32 = x;
+   |             ---   ^ expected `u32`, found `u8`
+   |             |
+   |             expected due to this
+   |
+help: you can convert a `u8` to a `u32`
+   |
+LL |     let _y: u32 = x.into();
+   |                    +++++++
+
+error: aborting due to 5 previous errors
+
+For more information about this error, try `rustc --explain E0308`.