about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2021-10-18 08:13:27 +0200
committerGitHub <noreply@github.com>2021-10-18 08:13:27 +0200
commit5898c5d88e7a7b7a28ab8fcca360c868b7f65d20 (patch)
tree41894374e45385f96163367ef721d7aea3711bcd /src
parentb356a04c9a158f4f16301afa4300f2c18a8d99d6 (diff)
parent856541963ce95ef4f7d4a81784bb5002ccf63c93 (diff)
downloadrust-5898c5d88e7a7b7a28ab8fcca360c868b7f65d20.tar.gz
rust-5898c5d88e7a7b7a28ab8fcca360c868b7f65d20.zip
Rollup merge of #89974 - est31:let_else_if_error, r=nagisa
Nicer error message if the user attempts to do let...else if

Gives a nice "conditional `else if` is not supported for `let...else`" error when encountering a `let...else if` pattern, as suggested in the [let...else tracking issue](https://github.com/rust-lang/rust/issues/87335#issuecomment-944846205).
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/let-else/let-else-if.rs10
-rw-r--r--src/test/ui/let-else/let-else-if.stderr18
2 files changed, 28 insertions, 0 deletions
diff --git a/src/test/ui/let-else/let-else-if.rs b/src/test/ui/let-else/let-else-if.rs
new file mode 100644
index 00000000000..c3a17330d6e
--- /dev/null
+++ b/src/test/ui/let-else/let-else-if.rs
@@ -0,0 +1,10 @@
+#![feature(let_else)]
+
+fn main() {
+    let Some(_) = Some(()) else if true {
+        //~^ ERROR conditional `else if` is not supported for `let...else`
+        return;
+    } else {
+        return;
+    };
+}
diff --git a/src/test/ui/let-else/let-else-if.stderr b/src/test/ui/let-else/let-else-if.stderr
new file mode 100644
index 00000000000..38c739fd850
--- /dev/null
+++ b/src/test/ui/let-else/let-else-if.stderr
@@ -0,0 +1,18 @@
+error: conditional `else if` is not supported for `let...else`
+  --> $DIR/let-else-if.rs:4:33
+   |
+LL |     let Some(_) = Some(()) else if true {
+   |                                 ^^ expected `{`
+   |
+help: try placing this code inside a block
+   |
+LL ~     let Some(_) = Some(()) else { if true {
+LL +
+LL +         return;
+LL +     } else {
+LL +         return;
+LL ~     } };
+   |
+
+error: aborting due to previous error
+