summaryrefslogtreecommitdiffstats
path: root/src/test/ui/let-else
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/let-else')
-rw-r--r--src/test/ui/let-else/const-fn.rs18
-rw-r--r--src/test/ui/let-else/issue-100103.rs15
-rw-r--r--src/test/ui/let-else/issue-102317.rs20
-rw-r--r--src/test/ui/let-else/issue-94176.rs10
-rw-r--r--src/test/ui/let-else/issue-94176.stderr19
-rw-r--r--src/test/ui/let-else/issue-99975.rs20
-rw-r--r--src/test/ui/let-else/let-else-allow-in-expr.rs28
-rw-r--r--src/test/ui/let-else/let-else-allow-in-expr.stderr20
-rw-r--r--src/test/ui/let-else/let-else-allow-unused.rs15
-rw-r--r--src/test/ui/let-else/let-else-allow-unused.stderr14
-rw-r--r--src/test/ui/let-else/let-else-binding-explicit-mut-annotated.rs16
-rw-r--r--src/test/ui/let-else/let-else-binding-explicit-mut-annotated.stderr25
-rw-r--r--src/test/ui/let-else/let-else-binding-explicit-mut-borrow.rs13
-rw-r--r--src/test/ui/let-else/let-else-binding-explicit-mut-borrow.stderr9
-rw-r--r--src/test/ui/let-else/let-else-binding-explicit-mut-pass.rs13
-rw-r--r--src/test/ui/let-else/let-else-binding-explicit-mut.rs20
-rw-r--r--src/test/ui/let-else/let-else-binding-explicit-mut.stderr21
-rw-r--r--src/test/ui/let-else/let-else-binding-immutable.rs10
-rw-r--r--src/test/ui/let-else/let-else-binding-immutable.stderr9
-rw-r--r--src/test/ui/let-else/let-else-bindings.rs75
-rw-r--r--src/test/ui/let-else/let-else-bool-binop-init.fixed8
-rw-r--r--src/test/ui/let-else/let-else-bool-binop-init.rs8
-rw-r--r--src/test/ui/let-else/let-else-bool-binop-init.stderr24
-rw-r--r--src/test/ui/let-else/let-else-brace-before-else.fixed26
-rw-r--r--src/test/ui/let-else/let-else-brace-before-else.rs26
-rw-r--r--src/test/ui/let-else/let-else-brace-before-else.stderr46
-rw-r--r--src/test/ui/let-else/let-else-check.rs17
-rw-r--r--src/test/ui/let-else/let-else-check.stderr20
-rw-r--r--src/test/ui/let-else/let-else-deref-coercion-annotated.rs77
-rw-r--r--src/test/ui/let-else/let-else-deref-coercion.rs75
-rw-r--r--src/test/ui/let-else/let-else-deref-coercion.stderr19
-rw-r--r--src/test/ui/let-else/let-else-destructuring.rs17
-rw-r--r--src/test/ui/let-else/let-else-destructuring.stderr17
-rw-r--r--src/test/ui/let-else/let-else-drop-order.rs270
-rw-r--r--src/test/ui/let-else/let-else-drop-order.run.stdout51
-rw-r--r--src/test/ui/let-else/let-else-if.rs8
-rw-r--r--src/test/ui/let-else/let-else-if.stderr17
-rw-r--r--src/test/ui/let-else/let-else-irrefutable.rs11
-rw-r--r--src/test/ui/let-else/let-else-irrefutable.stderr21
-rw-r--r--src/test/ui/let-else/let-else-missing-semicolon.rs9
-rw-r--r--src/test/ui/let-else/let-else-missing-semicolon.stderr18
-rw-r--r--src/test/ui/let-else/let-else-no-double-error.rs12
-rw-r--r--src/test/ui/let-else/let-else-no-double-error.stderr9
-rw-r--r--src/test/ui/let-else/let-else-non-copy.rs45
-rw-r--r--src/test/ui/let-else/let-else-non-diverging.rs22
-rw-r--r--src/test/ui/let-else/let-else-non-diverging.stderr55
-rw-r--r--src/test/ui/let-else/let-else-ref-bindings-pass.rs71
-rw-r--r--src/test/ui/let-else/let-else-ref-bindings.rs62
-rw-r--r--src/test/ui/let-else/let-else-ref-bindings.stderr83
-rw-r--r--src/test/ui/let-else/let-else-run-pass.rs35
-rw-r--r--src/test/ui/let-else/let-else-scope.rs5
-rw-r--r--src/test/ui/let-else/let-else-scope.stderr9
-rw-r--r--src/test/ui/let-else/let-else-slicing-error.rs9
-rw-r--r--src/test/ui/let-else/let-else-slicing-error.stderr11
-rw-r--r--src/test/ui/let-else/let-else-source-expr-nomove-pass.rs17
-rw-r--r--src/test/ui/let-else/let-else-temp-borrowck.rs26
-rw-r--r--src/test/ui/let-else/let-else-temporary-lifetime.rs99
-rw-r--r--src/test/ui/let-else/let-else-then-diverge.rs17
-rw-r--r--src/test/ui/let-else/let-else-then-diverge.stderr14
-rw-r--r--src/test/ui/let-else/let-else.rs8
60 files changed, 0 insertions, 1784 deletions
diff --git a/src/test/ui/let-else/const-fn.rs b/src/test/ui/let-else/const-fn.rs
deleted file mode 100644
index a3921b803..000000000
--- a/src/test/ui/let-else/const-fn.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// run-pass
-// issue #101932
-
-
-const fn foo(a: Option<i32>) -> i32 {
- let Some(a) = a else {
- return 42
- };
-
- a + 1
-}
-
-fn main() {
- const A: i32 = foo(None);
- const B: i32 = foo(Some(1));
-
- println!("{} {}", A, B);
-}
diff --git a/src/test/ui/let-else/issue-100103.rs b/src/test/ui/let-else/issue-100103.rs
deleted file mode 100644
index f5f9b2f5f..000000000
--- a/src/test/ui/let-else/issue-100103.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// edition:2021
-// check-pass
-
-#![feature(try_blocks)]
-
-
-fn main() {
- let _: Result<i32, i32> = try {
- let Some(x) = Some(0) else {
- Err(1)?
- };
-
- x
- };
-}
diff --git a/src/test/ui/let-else/issue-102317.rs b/src/test/ui/let-else/issue-102317.rs
deleted file mode 100644
index 7369b4938..000000000
--- a/src/test/ui/let-else/issue-102317.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// issue #102317
-// build-pass
-// compile-flags: --edition 2021 -C opt-level=3 -Zvalidate-mir
-
-struct SegmentJob;
-
-impl Drop for SegmentJob {
- fn drop(&mut self) {}
-}
-
-pub async fn run() -> Result<(), ()> {
- let jobs = Vec::<SegmentJob>::new();
- let Some(_job) = jobs.into_iter().next() else {
- return Ok(())
- };
-
- Ok(())
-}
-
-fn main() {}
diff --git a/src/test/ui/let-else/issue-94176.rs b/src/test/ui/let-else/issue-94176.rs
deleted file mode 100644
index f76dfc15b..000000000
--- a/src/test/ui/let-else/issue-94176.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-// Issue #94176: wrong span for the error message of a mismatched type error,
-// if the function uses a `let else` construct.
-
-
-pub fn test(a: Option<u32>) -> Option<u32> { //~ ERROR mismatched types
- let Some(_) = a else { return None; };
- println!("Foo");
-}
-
-fn main() {}
diff --git a/src/test/ui/let-else/issue-94176.stderr b/src/test/ui/let-else/issue-94176.stderr
deleted file mode 100644
index 0cb97acee..000000000
--- a/src/test/ui/let-else/issue-94176.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0308]: mismatched types
- --> $DIR/issue-94176.rs:5:32
- |
-LL | pub fn test(a: Option<u32>) -> Option<u32> {
- | ---- ^^^^^^^^^^^ expected enum `Option`, found `()`
- | |
- | implicitly returns `()` as its body has no tail or `return` expression
- |
- = note: expected enum `Option<u32>`
- found unit type `()`
-help: consider returning the local binding `a`
- |
-LL ~ println!("Foo");
-LL + a
- |
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/let-else/issue-99975.rs b/src/test/ui/let-else/issue-99975.rs
deleted file mode 100644
index 5b164f347..000000000
--- a/src/test/ui/let-else/issue-99975.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// run-pass
-// compile-flags: -C opt-level=3 -Zvalidate-mir
-
-
-
-fn return_result() -> Option<String> {
- Some("ok".to_string())
-}
-
-fn start() -> String {
- let Some(content) = return_result() else {
- return "none".to_string()
- };
-
- content
-}
-
-fn main() {
- start();
-}
diff --git a/src/test/ui/let-else/let-else-allow-in-expr.rs b/src/test/ui/let-else/let-else-allow-in-expr.rs
deleted file mode 100644
index 33acb6c6a..000000000
--- a/src/test/ui/let-else/let-else-allow-in-expr.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-#![deny(unused_variables)]
-
-fn main() {
- let Some(_): Option<u32> = ({
- let x = 1; //~ ERROR unused variable: `x`
- Some(1)
- }) else {
- return;
- };
-
- #[allow(unused_variables)]
- let Some(_): Option<u32> = ({
- let x = 1;
- Some(1)
- }) else {
- return;
- };
-
- let Some(_): Option<u32> = ({
- #[allow(unused_variables)]
- let x = 1;
- Some(1)
- }) else {
- return;
- };
-
- let x = 1; //~ ERROR unused variable: `x`
-}
diff --git a/src/test/ui/let-else/let-else-allow-in-expr.stderr b/src/test/ui/let-else/let-else-allow-in-expr.stderr
deleted file mode 100644
index 3b2b9066c..000000000
--- a/src/test/ui/let-else/let-else-allow-in-expr.stderr
+++ /dev/null
@@ -1,20 +0,0 @@
-error: unused variable: `x`
- --> $DIR/let-else-allow-in-expr.rs:5:13
- |
-LL | let x = 1;
- | ^ help: if this is intentional, prefix it with an underscore: `_x`
- |
-note: the lint level is defined here
- --> $DIR/let-else-allow-in-expr.rs:1:9
- |
-LL | #![deny(unused_variables)]
- | ^^^^^^^^^^^^^^^^
-
-error: unused variable: `x`
- --> $DIR/let-else-allow-in-expr.rs:27:9
- |
-LL | let x = 1;
- | ^ help: if this is intentional, prefix it with an underscore: `_x`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/let-else/let-else-allow-unused.rs b/src/test/ui/let-else/let-else-allow-unused.rs
deleted file mode 100644
index bbb1c7bea..000000000
--- a/src/test/ui/let-else/let-else-allow-unused.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// issue #89807
-
-
-
-#[deny(unused_variables)]
-
-fn main() {
- let value = Some(String::new());
- #[allow(unused)]
- let banana = 1;
- #[allow(unused)]
- let Some(chaenomeles) = value.clone() else { return }; // OK
-
- let Some(chaenomeles) = value else { return }; //~ ERROR unused variable: `chaenomeles`
-}
diff --git a/src/test/ui/let-else/let-else-allow-unused.stderr b/src/test/ui/let-else/let-else-allow-unused.stderr
deleted file mode 100644
index 05b8a9169..000000000
--- a/src/test/ui/let-else/let-else-allow-unused.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: unused variable: `chaenomeles`
- --> $DIR/let-else-allow-unused.rs:14:14
- |
-LL | let Some(chaenomeles) = value else { return };
- | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chaenomeles`
- |
-note: the lint level is defined here
- --> $DIR/let-else-allow-unused.rs:5:8
- |
-LL | #[deny(unused_variables)]
- | ^^^^^^^^^^^^^^^^
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut-annotated.rs b/src/test/ui/let-else/let-else-binding-explicit-mut-annotated.rs
deleted file mode 100644
index 955f33ee1..000000000
--- a/src/test/ui/let-else/let-else-binding-explicit-mut-annotated.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// from rfc2005 test suite
-
-
-
-// Verify the binding mode shifts - only when no `&` are auto-dereferenced is the
-// final default binding mode mutable.
-
-fn main() {
- let Some(n): &mut Option<i32> = &&Some(5i32) else { return }; //~ ERROR mismatched types
- *n += 1;
- let _ = n;
-
- let Some(n): &mut Option<i32> = &&mut Some(5i32) else { return }; //~ ERROR mismatched types
- *n += 1;
- let _ = n;
-}
diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut-annotated.stderr b/src/test/ui/let-else/let-else-binding-explicit-mut-annotated.stderr
deleted file mode 100644
index 065787cab..000000000
--- a/src/test/ui/let-else/let-else-binding-explicit-mut-annotated.stderr
+++ /dev/null
@@ -1,25 +0,0 @@
-error[E0308]: mismatched types
- --> $DIR/let-else-binding-explicit-mut-annotated.rs:9:37
- |
-LL | let Some(n): &mut Option<i32> = &&Some(5i32) else { return };
- | ---------------- ^^^^^^^^^^^^ types differ in mutability
- | |
- | expected due to this
- |
- = note: expected mutable reference `&mut Option<i32>`
- found reference `&&Option<i32>`
-
-error[E0308]: mismatched types
- --> $DIR/let-else-binding-explicit-mut-annotated.rs:13:37
- |
-LL | let Some(n): &mut Option<i32> = &&mut Some(5i32) else { return };
- | ---------------- ^^^^^^^^^^^^^^^^ types differ in mutability
- | |
- | expected due to this
- |
- = note: expected mutable reference `&mut Option<i32>`
- found reference `&&mut Option<i32>`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut-borrow.rs b/src/test/ui/let-else/let-else-binding-explicit-mut-borrow.rs
deleted file mode 100644
index 1524d0102..000000000
--- a/src/test/ui/let-else/let-else-binding-explicit-mut-borrow.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-// Slightly different from explicit-mut-annotated -- this won't show an error until borrowck.
-// Should it show a type error instead?
-
-
-
-fn main() {
- let Some(n): &mut Option<i32> = &mut &Some(5i32) else {
- //~^ ERROR cannot borrow data in a `&` reference as mutable
- return
- };
- *n += 1;
- let _ = n;
-}
diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut-borrow.stderr b/src/test/ui/let-else/let-else-binding-explicit-mut-borrow.stderr
deleted file mode 100644
index 023fab8fe..000000000
--- a/src/test/ui/let-else/let-else-binding-explicit-mut-borrow.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0596]: cannot borrow data in a `&` reference as mutable
- --> $DIR/let-else-binding-explicit-mut-borrow.rs:7:37
- |
-LL | let Some(n): &mut Option<i32> = &mut &Some(5i32) else {
- | ^^^^^^^^^^^^^^^^ cannot borrow as mutable
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0596`.
diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut-pass.rs b/src/test/ui/let-else/let-else-binding-explicit-mut-pass.rs
deleted file mode 100644
index b0a6264a1..000000000
--- a/src/test/ui/let-else/let-else-binding-explicit-mut-pass.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-// check-pass
-
-
-
-fn main() {
- let Some(n) = &mut &mut Some(5i32) else { return; };
- *n += 1; // OK
- let _ = n;
-
- let Some(n): &mut Option<i32> = &mut &mut Some(5i32) else { return; };
- *n += 1; // OK
- let _ = n;
-}
diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut.rs b/src/test/ui/let-else/let-else-binding-explicit-mut.rs
deleted file mode 100644
index a153b3af0..000000000
--- a/src/test/ui/let-else/let-else-binding-explicit-mut.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// from rfc2005 test suite
-
-
-
-// Verify the binding mode shifts - only when no `&` are auto-dereferenced is the
-// final default binding mode mutable.
-
-fn main() {
- let Some(n) = &&Some(5i32) else { return };
- *n += 1; //~ ERROR cannot assign to `*n`, which is behind a `&` reference
- let _ = n;
-
- let Some(n) = &mut &Some(5i32) else { return };
- *n += 1; //~ ERROR cannot assign to `*n`, which is behind a `&` reference
- let _ = n;
-
- let Some(n) = &&mut Some(5i32) else { return };
- *n += 1; //~ ERROR cannot assign to `*n`, which is behind a `&` reference
- let _ = n;
-}
diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut.stderr b/src/test/ui/let-else/let-else-binding-explicit-mut.stderr
deleted file mode 100644
index 45f2b6b3b..000000000
--- a/src/test/ui/let-else/let-else-binding-explicit-mut.stderr
+++ /dev/null
@@ -1,21 +0,0 @@
-error[E0594]: cannot assign to `*n`, which is behind a `&` reference
- --> $DIR/let-else-binding-explicit-mut.rs:10:5
- |
-LL | *n += 1;
- | ^^^^^^^ `n` is a `&` reference, so the data it refers to cannot be written
-
-error[E0594]: cannot assign to `*n`, which is behind a `&` reference
- --> $DIR/let-else-binding-explicit-mut.rs:14:5
- |
-LL | *n += 1;
- | ^^^^^^^ `n` is a `&` reference, so the data it refers to cannot be written
-
-error[E0594]: cannot assign to `*n`, which is behind a `&` reference
- --> $DIR/let-else-binding-explicit-mut.rs:18:5
- |
-LL | *n += 1;
- | ^^^^^^^ `n` is a `&` reference, so the data it refers to cannot be written
-
-error: aborting due to 3 previous errors
-
-For more information about this error, try `rustc --explain E0594`.
diff --git a/src/test/ui/let-else/let-else-binding-immutable.rs b/src/test/ui/let-else/let-else-binding-immutable.rs
deleted file mode 100644
index ff2d9f240..000000000
--- a/src/test/ui/let-else/let-else-binding-immutable.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-// from rfc2005 test suite
-
-
-
-pub fn main() {
- let Some(x) = &Some(3) else {
- panic!();
- };
- *x += 1; //~ ERROR: cannot assign to `*x`, which is behind a `&` reference
-}
diff --git a/src/test/ui/let-else/let-else-binding-immutable.stderr b/src/test/ui/let-else/let-else-binding-immutable.stderr
deleted file mode 100644
index dd1365a9e..000000000
--- a/src/test/ui/let-else/let-else-binding-immutable.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0594]: cannot assign to `*x`, which is behind a `&` reference
- --> $DIR/let-else-binding-immutable.rs:9:5
- |
-LL | *x += 1;
- | ^^^^^^^ `x` is a `&` reference, so the data it refers to cannot be written
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0594`.
diff --git a/src/test/ui/let-else/let-else-bindings.rs b/src/test/ui/let-else/let-else-bindings.rs
deleted file mode 100644
index 7d2cad978..000000000
--- a/src/test/ui/let-else/let-else-bindings.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-// run-pass
-// adapted from src/test/ui/binding/if-let.rs
-
-#![allow(dead_code)]
-
-fn none() -> bool {
- let None = Some("test") else {
- return true;
- };
- false
-}
-
-fn ok() -> bool {
- let Ok(()) = Err::<(),&'static str>("test") else {
- return true;
- };
- false
-}
-
-pub fn main() {
- let x = Some(3);
- let Some(y) = x else {
- panic!("let-else panicked");
- };
- assert_eq!(y, 3);
- let Some(_) = x else {
- panic!("bad match");
- };
- assert!(none());
- assert!(ok());
-
- assert!((|| {
- let 1 = 2 else {
- return true;
- };
- false
- })());
-
- enum Foo {
- One,
- Two(usize),
- Three(String, isize),
- }
-
- let foo = Foo::Three("three".to_string(), 42);
- let one = || {
- let Foo::One = foo else {
- return true;
- };
- false
- };
- assert!(one());
- let two = || {
- let Foo::Two(_x) = foo else {
- return true;
- };
- false
- };
- assert!(two());
- let three = || {
- let Foo::Three(s, _x) = foo else {
- return false;
- };
- s == "three"
- };
- assert!(three());
-
- let a@Foo::Two(_) = Foo::Two(42_usize) else {
- panic!("bad match")
- };
- let Foo::Two(b) = a else {
- panic!("panic in nested `if let`");
- };
- assert_eq!(b, 42_usize);
-}
diff --git a/src/test/ui/let-else/let-else-bool-binop-init.fixed b/src/test/ui/let-else/let-else-bool-binop-init.fixed
deleted file mode 100644
index 20e558ca9..000000000
--- a/src/test/ui/let-else/let-else-bool-binop-init.fixed
+++ /dev/null
@@ -1,8 +0,0 @@
-// run-rustfix
-
-
-
-fn main() {
- let true = (true && false) else { return }; //~ ERROR a `&&` expression cannot be directly assigned in `let...else`
- let true = (true || false) else { return }; //~ ERROR a `||` expression cannot be directly assigned in `let...else`
-}
diff --git a/src/test/ui/let-else/let-else-bool-binop-init.rs b/src/test/ui/let-else/let-else-bool-binop-init.rs
deleted file mode 100644
index f88179a94..000000000
--- a/src/test/ui/let-else/let-else-bool-binop-init.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-// run-rustfix
-
-
-
-fn main() {
- let true = true && false else { return }; //~ ERROR a `&&` expression cannot be directly assigned in `let...else`
- let true = true || false else { return }; //~ ERROR a `||` expression cannot be directly assigned in `let...else`
-}
diff --git a/src/test/ui/let-else/let-else-bool-binop-init.stderr b/src/test/ui/let-else/let-else-bool-binop-init.stderr
deleted file mode 100644
index edee65762..000000000
--- a/src/test/ui/let-else/let-else-bool-binop-init.stderr
+++ /dev/null
@@ -1,24 +0,0 @@
-error: a `&&` expression cannot be directly assigned in `let...else`
- --> $DIR/let-else-bool-binop-init.rs:6:16
- |
-LL | let true = true && false else { return };
- | ^^^^^^^^^^^^^
- |
-help: wrap the expression in parentheses
- |
-LL | let true = (true && false) else { return };
- | + +
-
-error: a `||` expression cannot be directly assigned in `let...else`
- --> $DIR/let-else-bool-binop-init.rs:7:16
- |
-LL | let true = true || false else { return };
- | ^^^^^^^^^^^^^
- |
-help: wrap the expression in parentheses
- |
-LL | let true = (true || false) else { return };
- | + +
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/let-else/let-else-brace-before-else.fixed b/src/test/ui/let-else/let-else-brace-before-else.fixed
deleted file mode 100644
index a75c770dd..000000000
--- a/src/test/ui/let-else/let-else-brace-before-else.fixed
+++ /dev/null
@@ -1,26 +0,0 @@
-// run-rustfix
-
-
-
-fn main() {
- let Some(1) = ({ Some(1) }) else {
- //~^ ERROR right curly brace `}` before `else` in a `let...else` statement not allowed
- return;
- };
- let Some(1) = (loop { break Some(1) }) else {
- //~^ ERROR right curly brace `}` before `else` in a `let...else` statement not allowed
- return;
- };
- let 2 = 1 + (match 1 { n => n }) else {
- //~^ ERROR right curly brace `}` before `else` in a `let...else` statement not allowed
- return;
- };
- let Some(1) = (unsafe { unsafe_fn() }) else {
- //~^ ERROR right curly brace `}` before `else` in a `let...else` statement not allowed
- return;
- };
-}
-
-unsafe fn unsafe_fn<T>() -> T {
- unimplemented!();
-}
diff --git a/src/test/ui/let-else/let-else-brace-before-else.rs b/src/test/ui/let-else/let-else-brace-before-else.rs
deleted file mode 100644
index 5603b946f..000000000
--- a/src/test/ui/let-else/let-else-brace-before-else.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-// run-rustfix
-
-
-
-fn main() {
- let Some(1) = { Some(1) } else {
- //~^ ERROR right curly brace `}` before `else` in a `let...else` statement not allowed
- return;
- };
- let Some(1) = loop { break Some(1) } else {
- //~^ ERROR right curly brace `}` before `else` in a `let...else` statement not allowed
- return;
- };
- let 2 = 1 + match 1 { n => n } else {
- //~^ ERROR right curly brace `}` before `else` in a `let...else` statement not allowed
- return;
- };
- let Some(1) = unsafe { unsafe_fn() } else {
- //~^ ERROR right curly brace `}` before `else` in a `let...else` statement not allowed
- return;
- };
-}
-
-unsafe fn unsafe_fn<T>() -> T {
- unimplemented!();
-}
diff --git a/src/test/ui/let-else/let-else-brace-before-else.stderr b/src/test/ui/let-else/let-else-brace-before-else.stderr
deleted file mode 100644
index cb01e4c18..000000000
--- a/src/test/ui/let-else/let-else-brace-before-else.stderr
+++ /dev/null
@@ -1,46 +0,0 @@
-error: right curly brace `}` before `else` in a `let...else` statement not allowed
- --> $DIR/let-else-brace-before-else.rs:6:29
- |
-LL | let Some(1) = { Some(1) } else {
- | ^
- |
-help: wrap the expression in parentheses
- |
-LL | let Some(1) = ({ Some(1) }) else {
- | + +
-
-error: right curly brace `}` before `else` in a `let...else` statement not allowed
- --> $DIR/let-else-brace-before-else.rs:10:40
- |
-LL | let Some(1) = loop { break Some(1) } else {
- | ^
- |
-help: wrap the expression in parentheses
- |
-LL | let Some(1) = (loop { break Some(1) }) else {
- | + +
-
-error: right curly brace `}` before `else` in a `let...else` statement not allowed
- --> $DIR/let-else-brace-before-else.rs:14:34
- |
-LL | let 2 = 1 + match 1 { n => n } else {
- | ^
- |
-help: wrap the expression in parentheses
- |
-LL | let 2 = 1 + (match 1 { n => n }) else {
- | + +
-
-error: right curly brace `}` before `else` in a `let...else` statement not allowed
- --> $DIR/let-else-brace-before-else.rs:18:40
- |
-LL | let Some(1) = unsafe { unsafe_fn() } else {
- | ^
- |
-help: wrap the expression in parentheses
- |
-LL | let Some(1) = (unsafe { unsafe_fn() }) else {
- | + +
-
-error: aborting due to 4 previous errors
-
diff --git a/src/test/ui/let-else/let-else-check.rs b/src/test/ui/let-else/let-else-check.rs
deleted file mode 100644
index 713fd986e..000000000
--- a/src/test/ui/let-else/let-else-check.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-#![deny(unused_variables)]
-
-fn main() {
- // type annotation, attributes
- #[allow(unused_variables)]
- let Some(_): Option<u32> = Some(Default::default()) else {
- let x = 1; // OK
- return;
- };
-
- let Some(_): Option<u32> = Some(Default::default()) else {
- let x = 1; //~ ERROR unused variable: `x`
- return;
- };
-
- let x = 1; //~ ERROR unused variable: `x`
-}
diff --git a/src/test/ui/let-else/let-else-check.stderr b/src/test/ui/let-else/let-else-check.stderr
deleted file mode 100644
index bdecbf708..000000000
--- a/src/test/ui/let-else/let-else-check.stderr
+++ /dev/null
@@ -1,20 +0,0 @@
-error: unused variable: `x`
- --> $DIR/let-else-check.rs:12:13
- |
-LL | let x = 1;
- | ^ help: if this is intentional, prefix it with an underscore: `_x`
- |
-note: the lint level is defined here
- --> $DIR/let-else-check.rs:1:9
- |
-LL | #![deny(unused_variables)]
- | ^^^^^^^^^^^^^^^^
-
-error: unused variable: `x`
- --> $DIR/let-else-check.rs:16:9
- |
-LL | let x = 1;
- | ^ help: if this is intentional, prefix it with an underscore: `_x`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/let-else/let-else-deref-coercion-annotated.rs b/src/test/ui/let-else/let-else-deref-coercion-annotated.rs
deleted file mode 100644
index 60fdf825a..000000000
--- a/src/test/ui/let-else/let-else-deref-coercion-annotated.rs
+++ /dev/null
@@ -1,77 +0,0 @@
-// check-pass
-//
-// Taken from https://github.com/rust-lang/rust/blob/6cc0a764e082d9c0abcf37a768d5889247ba13e2/compiler/rustc_typeck/src/check/_match.rs#L445-L462
-//
-// We attempt to `let Bar::Present(_): &mut Bar = foo else { ... }` where foo is meant to
-// Deref/DerefMut to Bar. You can do this with an irrefutable binding, so it should work with
-// let-else too.
-
-
-use std::ops::{Deref, DerefMut};
-
-struct Foo(Bar);
-
-enum Bar {
- Present(u32),
- Absent,
-}
-impl Deref for Foo {
- type Target = Bar;
- fn deref(&self) -> &Bar {
- &self.0
- }
-}
-impl DerefMut for Foo {
- fn deref_mut(&mut self) -> &mut Bar {
- &mut self.0
- }
-}
-impl Bar {
- fn bar(&self) -> Option<u32> {
- let Bar::Present(z): &Bar = self else {
- return None;
- };
- return Some(*z);
- }
-}
-impl Foo {
- fn set_bar_annotated(&mut self, value: u32) {
- let Bar::Present(z): &mut Bar = self else { // OK
- return;
- };
- *z = value;
- }
-}
-
-fn main() {
- let mut foo = Foo(Bar::Present(1));
- foo.set_bar_annotated(42);
- assert_eq!(foo.bar(), Some(42));
- irrefutable::inner();
-}
-
-// The original, to show it works for irrefutable let decls
-mod irrefutable {
- use std::ops::{Deref, DerefMut};
- struct Foo(Bar);
- struct Bar(u32);
- impl Deref for Foo {
- type Target = Bar;
- fn deref(&self) -> &Bar {
- &self.0
- }
- }
- impl DerefMut for Foo {
- fn deref_mut(&mut self) -> &mut Bar {
- &mut self.0
- }
- }
- fn foo(x: &mut Foo) {
- let Bar(z): &mut Bar = x; // OK
- *z = 42;
- assert_eq!((x.0).0, 42);
- }
- pub fn inner() {
- foo(&mut Foo(Bar(1)));
- }
-}
diff --git a/src/test/ui/let-else/let-else-deref-coercion.rs b/src/test/ui/let-else/let-else-deref-coercion.rs
deleted file mode 100644
index 052a5a8c7..000000000
--- a/src/test/ui/let-else/let-else-deref-coercion.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-// Taken from https://github.com/rust-lang/rust/blob/6cc0a764e082d9c0abcf37a768d5889247ba13e2/compiler/rustc_typeck/src/check/_match.rs#L445-L462
-//
-// We attempt to `let Bar::Present(_) = foo else { ... }` where foo is meant to Deref/DerefMut to
-// Bar. This fails, you must add a type annotation like `let _: &mut Bar = _ else { ... }`
-
-
-use std::ops::{Deref, DerefMut};
-
-struct Foo(Bar);
-
-enum Bar {
- Present(u32),
- Absent,
-}
-impl Deref for Foo {
- type Target = Bar;
- fn deref(&self) -> &Bar {
- &self.0
- }
-}
-impl DerefMut for Foo {
- fn deref_mut(&mut self) -> &mut Bar {
- &mut self.0
- }
-}
-impl Bar {
- fn bar(&self) -> Option<u32> {
- let Bar::Present(z): &Bar = self else {
- return None;
- };
- return Some(*z);
- }
-}
-impl Foo {
- // Try without the type annotation
- fn set_bar_unannotated(&mut self, value: u32) {
- let Bar::Present(z) = self else { //~ ERROR mismatched types
- return;
- };
- *z = value;
- }
-}
-
-fn main() {
- let mut foo = Foo(Bar::Present(1));
- foo.set_bar_unannotated(54);
- assert_eq!(foo.bar(), Some(54));
- irrefutable::inner();
-}
-
-// The original, to show it fails for irrefutable let decls
-mod irrefutable {
- use std::ops::{Deref, DerefMut};
- struct Foo(Bar);
- struct Bar(u32);
- impl Deref for Foo {
- type Target = Bar;
- fn deref(&self) -> &Bar {
- &self.0
- }
- }
- impl DerefMut for Foo {
- fn deref_mut(&mut self) -> &mut Bar {
- &mut self.0
- }
- }
- fn foo(x: &mut Foo) {
- let Bar(z) = x; //~ ERROR mismatched types
- *z = 54;
- assert_eq!((x.0).0, 54);
- }
- pub fn inner() {
- foo(&mut Foo(Bar(1)));
- }
-}
diff --git a/src/test/ui/let-else/let-else-deref-coercion.stderr b/src/test/ui/let-else/let-else-deref-coercion.stderr
deleted file mode 100644
index addcd798f..000000000
--- a/src/test/ui/let-else/let-else-deref-coercion.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0308]: mismatched types
- --> $DIR/let-else-deref-coercion.rs:37:13
- |
-LL | let Bar::Present(z) = self else {
- | ^^^^^^^^^^^^^^^ ---- this expression has type `&mut Foo`
- | |
- | expected struct `Foo`, found enum `Bar`
-
-error[E0308]: mismatched types
- --> $DIR/let-else-deref-coercion.rs:68:13
- |
-LL | let Bar(z) = x;
- | ^^^^^^ - this expression has type `&mut irrefutable::Foo`
- | |
- | expected struct `irrefutable::Foo`, found struct `irrefutable::Bar`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/let-else/let-else-destructuring.rs b/src/test/ui/let-else/let-else-destructuring.rs
deleted file mode 100644
index d1f1a69bf..000000000
--- a/src/test/ui/let-else/let-else-destructuring.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-#[derive(Debug)]
-enum Foo {
- Done,
- Nested(Option<&'static Foo>),
-}
-
-fn walk(mut value: &Foo) {
- loop {
- println!("{:?}", value);
- &Foo::Nested(Some(value)) = value else { break }; //~ ERROR invalid left-hand side of assignment
- //~^ERROR <assignment> ... else { ... } is not allowed
- }
-}
-
-fn main() {
- walk(&Foo::Done);
-}
diff --git a/src/test/ui/let-else/let-else-destructuring.stderr b/src/test/ui/let-else/let-else-destructuring.stderr
deleted file mode 100644
index 7d6cb2386..000000000
--- a/src/test/ui/let-else/let-else-destructuring.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-error: <assignment> ... else { ... } is not allowed
- --> $DIR/let-else-destructuring.rs:10:9
- |
-LL | &Foo::Nested(Some(value)) = value else { break };
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error[E0070]: invalid left-hand side of assignment
- --> $DIR/let-else-destructuring.rs:10:35
- |
-LL | &Foo::Nested(Some(value)) = value else { break };
- | ------------------------- ^
- | |
- | cannot assign to this expression
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0070`.
diff --git a/src/test/ui/let-else/let-else-drop-order.rs b/src/test/ui/let-else/let-else-drop-order.rs
deleted file mode 100644
index e91e5de84..000000000
--- a/src/test/ui/let-else/let-else-drop-order.rs
+++ /dev/null
@@ -1,270 +0,0 @@
-// run-pass
-// edition:2021
-// check-run-results
-//
-// Drop order tests for let else
-//
-// Mostly this ensures two things:
-// 1. That let and let else temporary drop order is the same.
-// This is a specific design request: https://github.com/rust-lang/rust/pull/93628#issuecomment-1047140316
-// 2. That the else block truly only runs after the
-// temporaries have dropped.
-//
-// We also print some nice tables for an overview by humans.
-// Changes in those tables are considered breakages, but the
-// important properties 1 and 2 are also enforced by the code.
-// This is important as it's easy to update the stdout file
-// with a --bless and miss the impact of that change.
-
-
-#![allow(irrefutable_let_patterns)]
-
-use std::cell::RefCell;
-use std::rc::Rc;
-
-#[derive(Clone)]
-struct DropAccountant(Rc<RefCell<Vec<Vec<String>>>>);
-
-impl DropAccountant {
- fn new() -> Self {
- Self(Default::default())
- }
- fn build_droppy(&self, v: u32) -> Droppy<u32> {
- Droppy(self.clone(), v)
- }
- fn build_droppy_enum_none(&self, _v: u32) -> ((), DroppyEnum<u32>) {
- ((), DroppyEnum::None(self.clone()))
- }
- fn new_list(&self, s: impl ToString) {
- self.0.borrow_mut().push(vec![s.to_string()]);
- }
- fn push(&self, s: impl ToString) {
- let s = s.to_string();
- let mut accounts = self.0.borrow_mut();
- accounts.last_mut().unwrap().push(s);
- }
- fn print_table(&self) {
- println!();
-
- let accounts = self.0.borrow();
- let before_last = &accounts[accounts.len() - 2];
- let last = &accounts[accounts.len() - 1];
- let before_last = get_comma_list(before_last);
- let last = get_comma_list(last);
- const LINES: &[&str] = &[
- "vanilla",
- "&",
- "&mut",
- "move",
- "fn(this)",
- "tuple",
- "array",
- "ref &",
- "ref mut &mut",
- ];
- let max_len = LINES.iter().map(|v| v.len()).max().unwrap();
- let max_len_before = before_last.iter().map(|v| v.len()).max().unwrap();
- let max_len_last = last.iter().map(|v| v.len()).max().unwrap();
-
- println!(
- "| {: <max_len$} | {: <max_len_before$} | {: <max_len_last$} |",
- "construct", before_last[0], last[0]
- );
- println!("| {:-<max_len$} | {:-<max_len_before$} | {:-<max_len_last$} |", "", "", "");
-
- for ((l, l_before), l_last) in
- LINES.iter().zip(before_last[1..].iter()).zip(last[1..].iter())
- {
- println!(
- "| {: <max_len$} | {: <max_len_before$} | {: <max_len_last$} |",
- l, l_before, l_last,
- );
- }
- }
- #[track_caller]
- fn assert_all_equal_to(&self, st: &str) {
- let accounts = self.0.borrow();
- let last = &accounts[accounts.len() - 1];
- let last = get_comma_list(last);
- for line in last[1..].iter() {
- assert_eq!(line.trim(), st.trim());
- }
- }
- #[track_caller]
- fn assert_equality_last_two_lists(&self) {
- let accounts = self.0.borrow();
- let last = &accounts[accounts.len() - 1];
- let before_last = &accounts[accounts.len() - 2];
- for (l, b) in last[1..].iter().zip(before_last[1..].iter()) {
- if !(l == b || l == "n/a" || b == "n/a") {
- panic!("not equal: '{last:?}' != '{before_last:?}'");
- }
- }
- }
-}
-
-fn get_comma_list(sl: &[String]) -> Vec<String> {
- std::iter::once(sl[0].clone())
- .chain(sl[1..].chunks(2).map(|c| c.join(",")))
- .collect::<Vec<String>>()
-}
-
-struct Droppy<T>(DropAccountant, T);
-
-impl<T> Drop for Droppy<T> {
- fn drop(&mut self) {
- self.0.push("drop");
- }
-}
-
-#[allow(dead_code)]
-enum DroppyEnum<T> {
- Some(DropAccountant, T),
- None(DropAccountant),
-}
-
-impl<T> Drop for DroppyEnum<T> {
- fn drop(&mut self) {
- match self {
- DroppyEnum::Some(acc, _inner) => acc,
- DroppyEnum::None(acc) => acc,
- }
- .push("drop");
- }
-}
-
-macro_rules! nestings_with {
- ($construct:ident, $binding:pat, $exp:expr) => {
- // vanilla:
- $construct!($binding, $exp.1);
-
- // &:
- $construct!(&$binding, &$exp.1);
-
- // &mut:
- $construct!(&mut $binding, &mut ($exp.1));
-
- {
- // move:
- let w = $exp;
- $construct!(
- $binding,
- {
- let w = w;
- w
- }
- .1
- );
- }
-
- // fn(this):
- $construct!($binding, std::convert::identity($exp).1);
- };
-}
-
-macro_rules! nestings {
- ($construct:ident, $binding:pat, $exp:expr) => {
- nestings_with!($construct, $binding, $exp);
-
- // tuple:
- $construct!(($binding, 77), ($exp.1, 77));
-
- // array:
- $construct!([$binding], [$exp.1]);
- };
-}
-
-macro_rules! let_else {
- ($acc:expr, $v:expr, $binding:pat, $build:ident) => {
- let acc = $acc;
- let v = $v;
-
- macro_rules! let_else_construct {
- ($arg:pat, $exp:expr) => {
- loop {
- let $arg = $exp else {
- acc.push("else");
- break;
- };
- acc.push("body");
- break;
- }
- };
- }
- nestings!(let_else_construct, $binding, acc.$build(v));
- // ref &:
- let_else_construct!($binding, &acc.$build(v).1);
-
- // ref mut &mut:
- let_else_construct!($binding, &mut acc.$build(v).1);
- };
-}
-
-macro_rules! let_ {
- ($acc:expr, $binding:tt) => {
- let acc = $acc;
-
- macro_rules! let_construct {
- ($arg:pat, $exp:expr) => {{
- let $arg = $exp;
- acc.push("body");
- }};
- }
- let v = 0;
- {
- nestings_with!(let_construct, $binding, acc.build_droppy(v));
- }
- acc.push("n/a");
- acc.push("n/a");
- acc.push("n/a");
- acc.push("n/a");
-
- // ref &:
- let_construct!($binding, &acc.build_droppy(v).1);
-
- // ref mut &mut:
- let_construct!($binding, &mut acc.build_droppy(v).1);
- };
-}
-
-fn main() {
- let acc = DropAccountant::new();
-
- println!(" --- matching cases ---");
-
- // Ensure that let and let else have the same behaviour
- acc.new_list("let _");
- let_!(&acc, _);
- acc.new_list("let else _");
- let_else!(&acc, 0, _, build_droppy);
- acc.assert_equality_last_two_lists();
- acc.print_table();
-
- // Ensure that let and let else have the same behaviour
- acc.new_list("let _v");
- let_!(&acc, _v);
- acc.new_list("let else _v");
- let_else!(&acc, 0, _v, build_droppy);
- acc.assert_equality_last_two_lists();
- acc.print_table();
-
- println!();
-
- println!(" --- mismatching cases ---");
-
- acc.new_list("let else _ mismatch");
- let_else!(&acc, 1, DroppyEnum::Some(_, _), build_droppy_enum_none);
- acc.new_list("let else _v mismatch");
- let_else!(&acc, 1, DroppyEnum::Some(_, _v), build_droppy_enum_none);
- acc.print_table();
- // This ensures that we always drop before visiting the else case
- acc.assert_all_equal_to("drop,else");
-
- acc.new_list("let else 0 mismatch");
- let_else!(&acc, 1, 0, build_droppy);
- acc.new_list("let else 0 mismatch");
- let_else!(&acc, 1, 0, build_droppy);
- acc.print_table();
- // This ensures that we always drop before visiting the else case
- acc.assert_all_equal_to("drop,else");
-}
diff --git a/src/test/ui/let-else/let-else-drop-order.run.stdout b/src/test/ui/let-else/let-else-drop-order.run.stdout
deleted file mode 100644
index 01cf2f73e..000000000
--- a/src/test/ui/let-else/let-else-drop-order.run.stdout
+++ /dev/null
@@ -1,51 +0,0 @@
- --- matching cases ---
-
-| construct | let _ | let else _ |
-| ------------ | --------- | ---------- |
-| vanilla | drop,body | drop,body |
-| & | body,drop | body,drop |
-| &mut | body,drop | body,drop |
-| move | drop,body | drop,body |
-| fn(this) | drop,body | drop,body |
-| tuple | n/a,n/a | drop,body |
-| array | n/a,n/a | drop,body |
-| ref & | body,drop | body,drop |
-| ref mut &mut | body,drop | body,drop |
-
-| construct | let _v | let else _v |
-| ------------ | --------- | ----------- |
-| vanilla | drop,body | drop,body |
-| & | body,drop | body,drop |
-| &mut | body,drop | body,drop |
-| move | drop,body | drop,body |
-| fn(this) | drop,body | drop,body |
-| tuple | n/a,n/a | drop,body |
-| array | n/a,n/a | drop,body |
-| ref & | body,drop | body,drop |
-| ref mut &mut | body,drop | body,drop |
-
- --- mismatching cases ---
-
-| construct | let else _ mismatch | let else _v mismatch |
-| ------------ | ------------------- | -------------------- |
-| vanilla | drop,else | drop,else |
-| & | drop,else | drop,else |
-| &mut | drop,else | drop,else |
-| move | drop,else | drop,else |
-| fn(this) | drop,else | drop,else |
-| tuple | drop,else | drop,else |
-| array | drop,else | drop,else |
-| ref & | drop,else | drop,else |
-| ref mut &mut | drop,else | drop,else |
-
-| construct | let else 0 mismatch | let else 0 mismatch |
-| ------------ | ------------------- | ------------------- |
-| vanilla | drop,else | drop,else |
-| & | drop,else | drop,else |
-| &mut | drop,else | drop,else |
-| move | drop,else | drop,else |
-| fn(this) | drop,else | drop,else |
-| tuple | drop,else | drop,else |
-| array | drop,else | drop,else |
-| ref & | drop,else | drop,else |
-| ref mut &mut | drop,else | drop,else |
diff --git a/src/test/ui/let-else/let-else-if.rs b/src/test/ui/let-else/let-else-if.rs
deleted file mode 100644
index e8c54ca7a..000000000
--- a/src/test/ui/let-else/let-else-if.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-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
deleted file mode 100644
index c63fd61c5..000000000
--- a/src/test/ui/let-else/let-else-if.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-error: conditional `else if` is not supported for `let...else`
- --> $DIR/let-else-if.rs:2: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 ~ } };
- |
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/let-else/let-else-irrefutable.rs b/src/test/ui/let-else/let-else-irrefutable.rs
deleted file mode 100644
index f4b338eb0..000000000
--- a/src/test/ui/let-else/let-else-irrefutable.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-// check-pass
-
-fn main() {
- let x = 1 else { return }; //~ WARN irrefutable `let...else` pattern
-
- // Multiline else blocks should not get printed
- let x = 1 else { //~ WARN irrefutable `let...else` pattern
- eprintln!("problem case encountered");
- return
- };
-}
diff --git a/src/test/ui/let-else/let-else-irrefutable.stderr b/src/test/ui/let-else/let-else-irrefutable.stderr
deleted file mode 100644
index 73d4e5f34..000000000
--- a/src/test/ui/let-else/let-else-irrefutable.stderr
+++ /dev/null
@@ -1,21 +0,0 @@
-warning: irrefutable `let...else` pattern
- --> $DIR/let-else-irrefutable.rs:4:5
- |
-LL | let x = 1 else { return };
- | ^^^^^^^^^
- |
- = note: this pattern will always match, so the `else` clause is useless
- = help: consider removing the `else` clause
- = note: `#[warn(irrefutable_let_patterns)]` on by default
-
-warning: irrefutable `let...else` pattern
- --> $DIR/let-else-irrefutable.rs:7:5
- |
-LL | let x = 1 else {
- | ^^^^^^^^^
- |
- = note: this pattern will always match, so the `else` clause is useless
- = help: consider removing the `else` clause
-
-warning: 2 warnings emitted
-
diff --git a/src/test/ui/let-else/let-else-missing-semicolon.rs b/src/test/ui/let-else/let-else-missing-semicolon.rs
deleted file mode 100644
index d87ac90c1..000000000
--- a/src/test/ui/let-else/let-else-missing-semicolon.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-fn main() {
- let Some(x) = Some(1) else {
- return;
- } //~ ERROR expected `;`, found keyword `let`
- let _ = "";
- let Some(x) = Some(1) else {
- panic!();
- } //~ ERROR expected `;`, found `}`
-}
diff --git a/src/test/ui/let-else/let-else-missing-semicolon.stderr b/src/test/ui/let-else/let-else-missing-semicolon.stderr
deleted file mode 100644
index 99029ff33..000000000
--- a/src/test/ui/let-else/let-else-missing-semicolon.stderr
+++ /dev/null
@@ -1,18 +0,0 @@
-error: expected `;`, found keyword `let`
- --> $DIR/let-else-missing-semicolon.rs:4:6
- |
-LL | }
- | ^ help: add `;` here
-LL | let _ = "";
- | --- unexpected token
-
-error: expected `;`, found `}`
- --> $DIR/let-else-missing-semicolon.rs:8:6
- |
-LL | }
- | ^ help: add `;` here
-LL | }
- | - unexpected token
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/let-else/let-else-no-double-error.rs b/src/test/ui/let-else/let-else-no-double-error.rs
deleted file mode 100644
index 91fcc5d7e..000000000
--- a/src/test/ui/let-else/let-else-no-double-error.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-// from rfc2005 test suite
-
-
-
-// Without caching type lookups in FnCtxt.resolve_ty_and_def_ufcs
-// the error below would be reported twice (once when checking
-// for a non-ref pattern, once when processing the pattern).
-
-fn main() {
- let foo = 22;
- let u32::XXX = foo else { return }; //~ ERROR: no associated item named `XXX` found for type `u32` in the current scope [E0599]
-}
diff --git a/src/test/ui/let-else/let-else-no-double-error.stderr b/src/test/ui/let-else/let-else-no-double-error.stderr
deleted file mode 100644
index 941e588b1..000000000
--- a/src/test/ui/let-else/let-else-no-double-error.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0599]: no associated item named `XXX` found for type `u32` in the current scope
- --> $DIR/let-else-no-double-error.rs:11:14
- |
-LL | let u32::XXX = foo else { return };
- | ^^^ associated item not found in `u32`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0599`.
diff --git a/src/test/ui/let-else/let-else-non-copy.rs b/src/test/ui/let-else/let-else-non-copy.rs
deleted file mode 100644
index 08c07dd1a..000000000
--- a/src/test/ui/let-else/let-else-non-copy.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-// run-pass
-//
-// This is derived from a change to compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs, in
-// preparation for adopting let-else within the compiler (thanks @est31):
-//
-// ```
-// - let place = if let mir::VarDebugInfoContents::Place(p) = var.value { p } else { continue };
-// + let mir::VarDebugInfoContents::Place(place) = var.value else { continue };
-// ```
-//
-// The move was due to mir::Place being Copy, but mir::VarDebugInfoContents not being Copy.
-
-
-
-#[derive(Copy, Clone)]
-struct Copyable;
-
-enum NonCopy {
- Thing(Copyable),
- #[allow(unused)]
- Other,
-}
-
-struct Wrapper {
- field: NonCopy,
-}
-
-fn let_else() {
- let vec = vec![Wrapper { field: NonCopy::Thing(Copyable) }];
- for item in &vec {
- let NonCopy::Thing(_copyable) = item.field else { continue };
- }
-}
-
-fn if_let() {
- let vec = vec![Wrapper { field: NonCopy::Thing(Copyable) }];
- for item in &vec {
- let _copyable = if let NonCopy::Thing(copyable) = item.field { copyable } else { continue };
- }
-}
-
-fn main() {
- let_else();
- if_let();
-}
diff --git a/src/test/ui/let-else/let-else-non-diverging.rs b/src/test/ui/let-else/let-else-non-diverging.rs
deleted file mode 100644
index a5442dd82..000000000
--- a/src/test/ui/let-else/let-else-non-diverging.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-fn main() {
- let Some(x) = Some(1) else { //~ ERROR does not diverge
- Some(2)
- };
- let Some(x) = Some(1) else { //~ ERROR does not diverge
- if 1 == 1 {
- panic!();
- }
- };
- let Some(x) = Some(1) else { Some(2) }; //~ ERROR does not diverge
-
- // Ensure that uninhabited types do not "diverge".
- // This might be relaxed in the future, but when it is,
- // it should be an explicitly wanted decision.
- let Some(x) = Some(1) else { foo::<Uninhabited>() }; //~ ERROR does not diverge
-}
-
-enum Uninhabited {}
-
-fn foo<T>() -> T {
- panic!()
-}
diff --git a/src/test/ui/let-else/let-else-non-diverging.stderr b/src/test/ui/let-else/let-else-non-diverging.stderr
deleted file mode 100644
index 78551fcc4..000000000
--- a/src/test/ui/let-else/let-else-non-diverging.stderr
+++ /dev/null
@@ -1,55 +0,0 @@
-error[E0308]: `else` clause of `let...else` does not diverge
- --> $DIR/let-else-non-diverging.rs:2:32
- |
-LL | let Some(x) = Some(1) else {
- | ________________________________^
-LL | | Some(2)
-LL | | };
- | |_____^ expected `!`, found enum `Option`
- |
- = note: expected type `!`
- found enum `Option<{integer}>`
- = help: try adding a diverging expression, such as `return` or `panic!(..)`
- = help: ...or use `match` instead of `let...else`
-
-error[E0308]: `else` clause of `let...else` does not diverge
- --> $DIR/let-else-non-diverging.rs:5:32
- |
-LL | let Some(x) = Some(1) else {
- | ________________________________^
-LL | | if 1 == 1 {
-LL | | panic!();
-LL | | }
-LL | | };
- | |_____^ expected `!`, found `()`
- |
- = note: expected type `!`
- found unit type `()`
- = help: try adding a diverging expression, such as `return` or `panic!(..)`
- = help: ...or use `match` instead of `let...else`
-
-error[E0308]: `else` clause of `let...else` does not diverge
- --> $DIR/let-else-non-diverging.rs:10:32
- |
-LL | let Some(x) = Some(1) else { Some(2) };
- | ^^^^^^^^^^^ expected `!`, found enum `Option`
- |
- = note: expected type `!`
- found enum `Option<{integer}>`
- = help: try adding a diverging expression, such as `return` or `panic!(..)`
- = help: ...or use `match` instead of `let...else`
-
-error[E0308]: `else` clause of `let...else` does not diverge
- --> $DIR/let-else-non-diverging.rs:15:32
- |
-LL | let Some(x) = Some(1) else { foo::<Uninhabited>() };
- | ^^^^^^^^^^^^^^^^^^^^^^^^ expected `!`, found enum `Uninhabited`
- |
- = note: expected type `!`
- found enum `Uninhabited`
- = help: try adding a diverging expression, such as `return` or `panic!(..)`
- = help: ...or use `match` instead of `let...else`
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/let-else/let-else-ref-bindings-pass.rs b/src/test/ui/let-else/let-else-ref-bindings-pass.rs
deleted file mode 100644
index 62fc65731..000000000
--- a/src/test/ui/let-else/let-else-ref-bindings-pass.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-// check-pass
-
-
-#![allow(unused_variables)]
-
-fn ref_() {
- let bytes: Vec<u8> = b"Hello"[..].to_vec();
- let some = Some(bytes);
-
- let Some(ref a) = Some(()) else { return };
-
- // | ref | type annotation | & |
- // | --- | --------------- | - |
- // | x | x | | error
- // | x | x | x | error
- // | | x | | error
- // | | x | x | error
- // | x | | |
- let Some(ref a) = some else { return }; // OK
- let b: &[u8] = a;
-
- // | x | | x |
- let Some(ref a) = &some else { return }; // OK
- let b: &[u8] = a;
-
-
- // | | | x |
- let Some(a) = &some else { return }; // OK
- let b: &[u8] = a;
-
- let Some(a): Option<&[u8]> = some.as_deref() else { return }; // OK
- let b: &[u8] = a;
- let Some(ref a): Option<&[u8]> = some.as_deref() else { return }; // OK
- let b: &[u8] = a;
-}
-
-fn ref_mut() {
- // This `ref mut` case had an ICE, see issue #89960
- let Some(ref mut a) = Some(()) else { return };
-
- let bytes: Vec<u8> = b"Hello"[..].to_vec();
- let mut some = Some(bytes);
-
- // | ref mut | type annotation | &mut |
- // | ------- | --------------- | ---- |
- // | x | x | | error
- // | x | x | x | error
- // | | x | | error
- // | | x | x | error
- // | x | | |
- let Some(ref mut a) = some else { return }; // OK
- let b: &mut [u8] = a;
-
- // | x | | x |
- let Some(ref mut a) = &mut some else { return }; // OK
- let b: &mut [u8] = a;
-
- // | | | x |
- let Some(a) = &mut some else { return }; // OK
- let b: &mut [u8] = a;
-
- let Some(a): Option<&mut [u8]> = some.as_deref_mut() else { return }; // OK
- let b: &mut [u8] = a;
- let Some(ref mut a): Option<&mut [u8]> = some.as_deref_mut() else { return }; // OK
- let b: &mut [u8] = a;
-}
-
-fn main() {
- ref_();
- ref_mut();
-}
diff --git a/src/test/ui/let-else/let-else-ref-bindings.rs b/src/test/ui/let-else/let-else-ref-bindings.rs
deleted file mode 100644
index 687e235d4..000000000
--- a/src/test/ui/let-else/let-else-ref-bindings.rs
+++ /dev/null
@@ -1,62 +0,0 @@
-#![allow(unused_variables)]
-
-
-fn ref_() {
- let bytes: Vec<u8> = b"Hello"[..].to_vec();
- let some = Some(bytes);
-
- let Some(ref a) = Some(()) else { return };
-
- // | ref | type annotation | & |
- // | --- | --------------- | - |
- // | x | | | OK
- // | x | | x | OK
- // | | | x | OK
- // | x | x | |
- let Some(ref a): Option<&[u8]> = some else { return }; //~ ERROR mismatched types
- let b: & [u8] = a;
-
- // | x | x | x |
- let Some(ref a): Option<&[u8]> = &some else { return }; //~ ERROR mismatched types
- let b: & [u8] = a;
-
- // | | x | |
- let Some(a): Option<&[u8]> = some else { return }; //~ ERROR mismatched types
- let b: &[u8] = a;
- // | | x | x |
- let Some(a): Option<&[u8]> = &some else { return }; //~ ERROR mismatched types
- let b: &[u8] = a;
-}
-
-fn ref_mut() {
- // This `ref mut` case had an ICE, see issue #89960
- let Some(ref mut a) = Some(()) else { return };
-
- let bytes: Vec<u8> = b"Hello"[..].to_vec();
- let mut some = Some(bytes);
-
- // | ref mut | type annotation | &mut |
- // | ------- | --------------- | ---- |
- // | x | | | OK
- // | x | | x | OK
- // | | | x | OK
- // | x | x | |
- let Some(ref mut a): Option<&mut [u8]> = some else { return }; //~ ERROR mismatched types
- let b: &mut [u8] = a;
-
- // | x | x | x | (nope)
- let Some(ref mut a): Option<&mut [u8]> = &mut some else { return }; //~ ERROR mismatched types
- let b: &mut [u8] = a;
-
- // | | x | |
- let Some(a): Option<&mut [u8]> = some else { return }; //~ ERROR mismatched types
- let b: &mut [u8] = a;
- // | | x | x |
- let Some(a): Option<&mut [u8]> = &mut some else { return }; //~ ERROR mismatched types
- let b: &mut [u8] = a;
-}
-
-fn main() {
- ref_();
- ref_mut();
-}
diff --git a/src/test/ui/let-else/let-else-ref-bindings.stderr b/src/test/ui/let-else/let-else-ref-bindings.stderr
deleted file mode 100644
index 56b9e0733..000000000
--- a/src/test/ui/let-else/let-else-ref-bindings.stderr
+++ /dev/null
@@ -1,83 +0,0 @@
-error[E0308]: mismatched types
- --> $DIR/let-else-ref-bindings.rs:16:38
- |
-LL | let Some(ref a): Option<&[u8]> = some else { return };
- | ^^^^ expected `&[u8]`, found struct `Vec`
- |
- = note: expected enum `Option<&[u8]>`
- found enum `Option<Vec<u8>>`
-
-error[E0308]: mismatched types
- --> $DIR/let-else-ref-bindings.rs:20:38
- |
-LL | let Some(ref a): Option<&[u8]> = &some else { return };
- | ^^^^^ expected enum `Option`, found `&Option<Vec<u8>>`
- |
- = note: expected enum `Option<&[u8]>`
- found reference `&Option<Vec<u8>>`
-
-error[E0308]: mismatched types
- --> $DIR/let-else-ref-bindings.rs:24:34
- |
-LL | let Some(a): Option<&[u8]> = some else { return };
- | ------------- ^^^^ expected `&[u8]`, found struct `Vec`
- | |
- | expected due to this
- |
- = note: expected enum `Option<&[u8]>`
- found enum `Option<Vec<u8>>`
-
-error[E0308]: mismatched types
- --> $DIR/let-else-ref-bindings.rs:27:34
- |
-LL | let Some(a): Option<&[u8]> = &some else { return };
- | ------------- ^^^^^ expected enum `Option`, found `&Option<Vec<u8>>`
- | |
- | expected due to this
- |
- = note: expected enum `Option<&[u8]>`
- found reference `&Option<Vec<u8>>`
-
-error[E0308]: mismatched types
- --> $DIR/let-else-ref-bindings.rs:44:46
- |
-LL | let Some(ref mut a): Option<&mut [u8]> = some else { return };
- | ^^^^ expected `&mut [u8]`, found struct `Vec`
- |
- = note: expected enum `Option<&mut [u8]>`
- found enum `Option<Vec<u8>>`
-
-error[E0308]: mismatched types
- --> $DIR/let-else-ref-bindings.rs:48:46
- |
-LL | let Some(ref mut a): Option<&mut [u8]> = &mut some else { return };
- | ^^^^^^^^^ expected enum `Option`, found mutable reference
- |
- = note: expected enum `Option<&mut [u8]>`
- found mutable reference `&mut Option<Vec<u8>>`
-
-error[E0308]: mismatched types
- --> $DIR/let-else-ref-bindings.rs:52:38
- |
-LL | let Some(a): Option<&mut [u8]> = some else { return };
- | ----------------- ^^^^ expected `&mut [u8]`, found struct `Vec`
- | |
- | expected due to this
- |
- = note: expected enum `Option<&mut [u8]>`
- found enum `Option<Vec<u8>>`
-
-error[E0308]: mismatched types
- --> $DIR/let-else-ref-bindings.rs:55:38
- |
-LL | let Some(a): Option<&mut [u8]> = &mut some else { return };
- | ----------------- ^^^^^^^^^ expected enum `Option`, found mutable reference
- | |
- | expected due to this
- |
- = note: expected enum `Option<&mut [u8]>`
- found mutable reference `&mut Option<Vec<u8>>`
-
-error: aborting due to 8 previous errors
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/let-else/let-else-run-pass.rs b/src/test/ui/let-else/let-else-run-pass.rs
deleted file mode 100644
index a0fb6c683..000000000
--- a/src/test/ui/let-else/let-else-run-pass.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-// run-pass
-
-
-
-fn main() {
- #[allow(dead_code)]
- enum MyEnum {
- A(String),
- B { f: String },
- C,
- }
- // ref binding to non-copy value and or-pattern
- let (MyEnum::A(ref x) | MyEnum::B { f: ref x }) = (MyEnum::B { f: String::new() }) else {
- panic!();
- };
- assert_eq!(x, "");
-
- // nested let-else
- let mut x = 1;
- loop {
- let 4 = x else {
- let 3 = x else {
- x += 1;
- continue;
- };
- break;
- };
- panic!();
- }
- assert_eq!(x, 3);
-
- // else return
- let Some(1) = Some(2) else { return };
- panic!();
-}
diff --git a/src/test/ui/let-else/let-else-scope.rs b/src/test/ui/let-else/let-else-scope.rs
deleted file mode 100644
index 78a67769e..000000000
--- a/src/test/ui/let-else/let-else-scope.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-fn main() {
- let Some(x) = Some(2) else {
- panic!("{}", x); //~ ERROR cannot find value `x` in this scope
- };
-}
diff --git a/src/test/ui/let-else/let-else-scope.stderr b/src/test/ui/let-else/let-else-scope.stderr
deleted file mode 100644
index 3b4f09829..000000000
--- a/src/test/ui/let-else/let-else-scope.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0425]: cannot find value `x` in this scope
- --> $DIR/let-else-scope.rs:3:22
- |
-LL | panic!("{}", x);
- | ^ not found in this scope
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0425`.
diff --git a/src/test/ui/let-else/let-else-slicing-error.rs b/src/test/ui/let-else/let-else-slicing-error.rs
deleted file mode 100644
index 25770094b..000000000
--- a/src/test/ui/let-else/let-else-slicing-error.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-// issue #92069
-
-
-fn main() {
- let nums = vec![5, 4, 3, 2, 1];
- let [x, y] = nums else { //~ ERROR expected an array or slice
- return;
- };
-}
diff --git a/src/test/ui/let-else/let-else-slicing-error.stderr b/src/test/ui/let-else/let-else-slicing-error.stderr
deleted file mode 100644
index 064025e03..000000000
--- a/src/test/ui/let-else/let-else-slicing-error.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0529]: expected an array or slice, found `Vec<{integer}>`
- --> $DIR/let-else-slicing-error.rs:6:9
- |
-LL | let [x, y] = nums else {
- | ^^^^^^ ---- help: consider slicing here: `nums[..]`
- | |
- | pattern cannot match with input type `Vec<{integer}>`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0529`.
diff --git a/src/test/ui/let-else/let-else-source-expr-nomove-pass.rs b/src/test/ui/let-else/let-else-source-expr-nomove-pass.rs
deleted file mode 100644
index ee378abcf..000000000
--- a/src/test/ui/let-else/let-else-source-expr-nomove-pass.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// run-pass
-// issue #89688
-
-
-
-fn example_let_else(value: Option<String>) {
- let Some(inner) = value else {
- println!("other: {:?}", value); // OK
- return;
- };
- println!("inner: {}", inner);
-}
-
-fn main() {
- example_let_else(Some("foo".into()));
- example_let_else(None);
-}
diff --git a/src/test/ui/let-else/let-else-temp-borrowck.rs b/src/test/ui/let-else/let-else-temp-borrowck.rs
deleted file mode 100644
index 6b4642d2f..000000000
--- a/src/test/ui/let-else/let-else-temp-borrowck.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-// run-pass
-//
-// from issue #93951, where borrowck complained the temporary that `foo(&x)` was stored in was to
-// be dropped sometime after `x` was. It then suggested adding a semicolon that was already there.
-
-
-use std::fmt::Debug;
-
-fn foo<'a>(x: &'a str) -> Result<impl Debug + 'a, ()> {
- Ok(x)
-}
-
-fn let_else() {
- let x = String::from("Hey");
- let Ok(_) = foo(&x) else { return };
-}
-
-fn if_let() {
- let x = String::from("Hey");
- let _ = if let Ok(s) = foo(&x) { s } else { return };
-}
-
-fn main() {
- let_else();
- if_let();
-}
diff --git a/src/test/ui/let-else/let-else-temporary-lifetime.rs b/src/test/ui/let-else/let-else-temporary-lifetime.rs
deleted file mode 100644
index c23eaa997..000000000
--- a/src/test/ui/let-else/let-else-temporary-lifetime.rs
+++ /dev/null
@@ -1,99 +0,0 @@
-// run-pass
-// compile-flags: -Zvalidate-mir
-
-use std::fmt::Display;
-use std::rc::Rc;
-use std::sync::atomic::{AtomicU8, Ordering};
-
-static TRACKER: AtomicU8 = AtomicU8::new(0);
-
-#[derive(Default)]
-struct Droppy {
- inner: u32,
-}
-
-impl Drop for Droppy {
- fn drop(&mut self) {
- TRACKER.store(1, Ordering::Release);
- println!("I've been dropped");
- }
-}
-
-fn foo<'a>(x: &'a str) -> Result<impl Display + 'a, ()> {
- Ok(x)
-}
-
-fn main() {
- assert_eq!(TRACKER.load(Ordering::Acquire), 0);
- let 0 = Droppy::default().inner else { return };
- assert_eq!(TRACKER.load(Ordering::Acquire), 1);
- println!("Should have dropped 👆");
-
- {
- // cf. https://github.com/rust-lang/rust/pull/99518#issuecomment-1191520030
- struct Foo<'a>(&'a mut u32);
-
- impl<'a> Drop for Foo<'a> {
- fn drop(&mut self) {
- *self.0 = 0;
- }
- }
- let mut foo = 0;
- let Foo(0) = Foo(&mut foo) else {
- *&mut foo = 1;
- todo!()
- };
- }
- {
- let x = String::from("Hey");
-
- let Ok(s) = foo(&x) else { panic!() };
- assert_eq!(s.to_string(), x);
- }
- {
- // test let-else drops temps after statement
- let rc = Rc::new(0);
- let 0 = *rc.clone() else { unreachable!() };
- Rc::try_unwrap(rc).unwrap();
- }
- {
- let mut rc = Rc::new(0);
- let mut i = 0;
- loop {
- if i > 3 {
- break;
- }
- let 1 = *rc.clone() else {
- if let Ok(v) = Rc::try_unwrap(rc) {
- rc = Rc::new(v);
- } else {
- panic!()
- }
- i += 1;
- continue
- };
- }
- }
- {
- fn must_pass() {
- let rc = Rc::new(());
- let &None = &Some(Rc::clone(&rc)) else {
- Rc::try_unwrap(rc).unwrap();
- return;
- };
- unreachable!();
- }
- must_pass();
- }
- {
- // test let-else drops temps before else block
- // NOTE: this test has to be the last block in the `main`
- // body.
- let rc = Rc::new(0);
- let 1 = *rc.clone() else {
- Rc::try_unwrap(rc).unwrap();
- return;
- };
- unreachable!();
- }
-}
diff --git a/src/test/ui/let-else/let-else-then-diverge.rs b/src/test/ui/let-else/let-else-then-diverge.rs
deleted file mode 100644
index 1a75310c9..000000000
--- a/src/test/ui/let-else/let-else-then-diverge.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// popped up in #94012, where an alternative desugaring was
-// causing unreachable code errors
-
-#![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
deleted file mode 100644
index 470a11d47..000000000
--- a/src/test/ui/let-else/let-else-then-diverge.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: unused variable: `x`
- --> $DIR/let-else-then-diverge.rs:9: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:4:9
- |
-LL | #![deny(unused_variables)]
- | ^^^^^^^^^^^^^^^^
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/let-else/let-else.rs b/src/test/ui/let-else/let-else.rs
deleted file mode 100644
index 3505533e6..000000000
--- a/src/test/ui/let-else/let-else.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-// run-pass
-
-fn main() {
- let Some(x) = Some(1) else {
- return;
- };
- assert_eq!(x, 1);
-}