about summary refs log tree commit diff
path: root/tests/ui/let-else
diff options
context:
space:
mode:
authorEdward Shen <code@eddie.sh>2023-01-23 20:31:45 -0800
committerEdward Shen <xes@meta.com>2023-01-23 20:33:04 -0800
commita8b77cfe5464e29b25389593ced9d080bf0dd6c8 (patch)
tree2fae43b147645668da9ce11c1c52f7652bec936d /tests/ui/let-else
parentc8e6a9e8b6251bbc8276cb78cabe1998deecbed7 (diff)
downloadrust-a8b77cfe5464e29b25389593ced9d080bf0dd6c8.tar.gz
rust-a8b77cfe5464e29b25389593ced9d080bf0dd6c8.zip
Add suggestion to remove if in let...else block
Adds an additional hint to failures where we encounter an else keyword
while we're parsing an if-let block.

This is likely that the user has accidentally mixed if-let and let...else
together.
Diffstat (limited to 'tests/ui/let-else')
-rw-r--r--tests/ui/let-else/accidental-if.rs6
-rw-r--r--tests/ui/let-else/accidental-if.stderr19
2 files changed, 25 insertions, 0 deletions
diff --git a/tests/ui/let-else/accidental-if.rs b/tests/ui/let-else/accidental-if.rs
new file mode 100644
index 00000000000..3fba630435c
--- /dev/null
+++ b/tests/ui/let-else/accidental-if.rs
@@ -0,0 +1,6 @@
+fn main() {
+    let x = Some(123);
+    if let Some(y) = x else { //~ ERROR this `if` expression is missing a block
+        return;
+    };
+}
diff --git a/tests/ui/let-else/accidental-if.stderr b/tests/ui/let-else/accidental-if.stderr
new file mode 100644
index 00000000000..5474a67aac4
--- /dev/null
+++ b/tests/ui/let-else/accidental-if.stderr
@@ -0,0 +1,19 @@
+error: this `if` expression is missing a block after the condition
+  --> $DIR/accidental-if.rs:3:5
+   |
+LL |     if let Some(y) = x else {
+   |     ^^
+   |
+help: add a block here
+  --> $DIR/accidental-if.rs:3:23
+   |
+LL |     if let Some(y) = x else {
+   |                       ^
+help: remove the `if` if you meant to write a `let...else` statement
+  --> $DIR/accidental-if.rs:3:5
+   |
+LL |     if let Some(y) = x else {
+   |     ^^
+
+error: aborting due to previous error
+