about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tests/ui/parser/bad-let-else-statement.rs14
-rw-r--r--tests/ui/parser/bad-let-else-statement.stderr14
2 files changed, 27 insertions, 1 deletions
diff --git a/tests/ui/parser/bad-let-else-statement.rs b/tests/ui/parser/bad-let-else-statement.rs
index 8ed55f94959..2dce9ed24d2 100644
--- a/tests/ui/parser/bad-let-else-statement.rs
+++ b/tests/ui/parser/bad-let-else-statement.rs
@@ -196,4 +196,18 @@ fn s() {
     b!(2);
 }
 
+fn t() {
+    macro_rules! primitive {
+        (8) => { u8 };
+    }
+
+    let foo = &std::ptr::null as &'static dyn std::ops::Fn() -> *const primitive! {
+        //~^ WARN irrefutable `let...else` pattern
+        8
+    } else {
+        // FIXME: right curly brace `}` before `else` in a `let...else` statement not allowed
+        return;
+    };
+}
+
 fn main() {}
diff --git a/tests/ui/parser/bad-let-else-statement.stderr b/tests/ui/parser/bad-let-else-statement.stderr
index 60b4600ff35..76097aaca83 100644
--- a/tests/ui/parser/bad-let-else-statement.stderr
+++ b/tests/ui/parser/bad-let-else-statement.stderr
@@ -299,5 +299,17 @@ LL |     let bad = format_args! {""} else { return; };
    = note: this pattern will always match, so the `else` clause is useless
    = help: consider removing the `else` clause
 
-error: aborting due to 19 previous errors; 4 warnings emitted
+warning: irrefutable `let...else` pattern
+  --> $DIR/bad-let-else-statement.rs:204:5
+   |
+LL | /     let foo = &std::ptr::null as &'static dyn std::ops::Fn() -> *const primitive! {
+LL | |
+LL | |         8
+LL | |     } else {
+   | |_____^
+   |
+   = note: this pattern will always match, so the `else` clause is useless
+   = help: consider removing the `else` clause
+
+error: aborting due to 19 previous errors; 5 warnings emitted