about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCormac Relf <web@cormacrelf.net>2022-02-15 17:42:50 +1100
committerest31 <MTest31@outlook.com>2022-08-12 10:03:57 +0200
commite3c5bd617d040b5ee0bc79e6e7f01772adce791b (patch)
treef7fcb68a2962ec56c050fa83896b1b163c689283
parente2b52ff73edc8b0b7c74bc28760d618187731fe8 (diff)
downloadrust-e3c5bd617d040b5ee0bc79e6e7f01772adce791b.tar.gz
rust-e3c5bd617d040b5ee0bc79e6e7f01772adce791b.zip
let-else: add a test for warnings on let-else with diverging tail
-rw-r--r--src/test/ui/let-else/let-else-then-diverge.rs19
-rw-r--r--src/test/ui/let-else/let-else-then-diverge.stderr14
2 files changed, 33 insertions, 0 deletions
diff --git a/src/test/ui/let-else/let-else-then-diverge.rs b/src/test/ui/let-else/let-else-then-diverge.rs
new file mode 100644
index 00000000000..49633d943be
--- /dev/null
+++ b/src/test/ui/let-else/let-else-then-diverge.rs
@@ -0,0 +1,19 @@
+//
+// popped up in in #94012, where an alternative desugaring was
+// causing unreachable code errors
+
+#![feature(let_else)]
+#![deny(unused_variables)]
+#![deny(unreachable_code)]
+
+fn let_else_diverge() -> bool {
+    let Some(_) = Some("test") else {
+        let x = 5; //~ ERROR unused variable: `x`
+        return false;
+    };
+    return true;
+}
+
+fn main() {
+    let_else_diverge();
+}
diff --git a/src/test/ui/let-else/let-else-then-diverge.stderr b/src/test/ui/let-else/let-else-then-diverge.stderr
new file mode 100644
index 00000000000..ceb61029d38
--- /dev/null
+++ b/src/test/ui/let-else/let-else-then-diverge.stderr
@@ -0,0 +1,14 @@
+error: unused variable: `x`
+  --> $DIR/let-else-then-diverge.rs:11:13
+   |
+LL |         let x = 5;
+   |             ^ help: if this is intentional, prefix it with an underscore: `_x`
+   |
+note: the lint level is defined here
+  --> $DIR/let-else-then-diverge.rs:6:9
+   |
+LL | #![deny(unused_variables)]
+   |         ^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+