about summary refs log tree commit diff
path: root/tests/ui/rfcs
diff options
context:
space:
mode:
authorNadrieril <nadrieril+git@gmail.com>2024-01-18 18:22:08 +0100
committerNadrieril <nadrieril+git@gmail.com>2024-01-22 15:12:57 +0100
commitd1f1075931983be0a2ae91905fe8a6da50149d3d (patch)
treecc1df8de34e9e05d3cc5220a2ed6218b849d9117 /tests/ui/rfcs
parenta9ea07d17c329f5a36e01826f704c16093d02f14 (diff)
downloadrust-d1f1075931983be0a2ae91905fe8a6da50149d3d.tar.gz
rust-d1f1075931983be0a2ae91905fe8a6da50149d3d.zip
Never pattern in `let` statement diverges
Diffstat (limited to 'tests/ui/rfcs')
-rw-r--r--tests/ui/rfcs/rfc-0000-never_patterns/diverge-causes-unreachable-code.rs15
-rw-r--r--tests/ui/rfcs/rfc-0000-never_patterns/diverge-causes-unreachable-code.stderr15
-rw-r--r--tests/ui/rfcs/rfc-0000-never_patterns/diverges.rs12
3 files changed, 27 insertions, 15 deletions
diff --git a/tests/ui/rfcs/rfc-0000-never_patterns/diverge-causes-unreachable-code.rs b/tests/ui/rfcs/rfc-0000-never_patterns/diverge-causes-unreachable-code.rs
index 5c852c8adcc..f7e4007b920 100644
--- a/tests/ui/rfcs/rfc-0000-never_patterns/diverge-causes-unreachable-code.rs
+++ b/tests/ui/rfcs/rfc-0000-never_patterns/diverge-causes-unreachable-code.rs
@@ -17,13 +17,14 @@ fn ref_never_arg(&!: &Void) -> u32 {
     //~^ ERROR unreachable statement
 }
 
-//fn never_let() -> u32 {
-//    let ptr: *const Void = std::ptr::null();
-//    unsafe {
-//        let ! = *ptr;
-//    }
-//    println!();
-//}
+fn never_let() -> u32 {
+    let ptr: *const Void = std::ptr::null();
+    unsafe {
+        let ! = *ptr;
+    }
+    println!();
+    //~^ ERROR unreachable statement
+}
 
 fn never_match() -> u32 {
     let ptr: *const Void = std::ptr::null();
diff --git a/tests/ui/rfcs/rfc-0000-never_patterns/diverge-causes-unreachable-code.stderr b/tests/ui/rfcs/rfc-0000-never_patterns/diverge-causes-unreachable-code.stderr
index c9cd3f53944..c33a5855d50 100644
--- a/tests/ui/rfcs/rfc-0000-never_patterns/diverge-causes-unreachable-code.stderr
+++ b/tests/ui/rfcs/rfc-0000-never_patterns/diverge-causes-unreachable-code.stderr
@@ -24,7 +24,18 @@ LL |     println!();
    = note: this error originates in the macro `$crate::print` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 error: unreachable statement
-  --> $DIR/diverge-causes-unreachable-code.rs:33:5
+  --> $DIR/diverge-causes-unreachable-code.rs:25:5
+   |
+LL |         let ! = *ptr;
+   |             - any code following a never pattern is unreachable
+LL |     }
+LL |     println!();
+   |     ^^^^^^^^^^ unreachable statement
+   |
+   = note: this error originates in the macro `$crate::print` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: unreachable statement
+  --> $DIR/diverge-causes-unreachable-code.rs:34:5
    |
 LL |         match *ptr { ! };
    |         ---------------- any code following this `match` expression is unreachable, as all arms diverge
@@ -34,5 +45,5 @@ LL |     println!();
    |
    = note: this error originates in the macro `$crate::print` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error: aborting due to 3 previous errors
+error: aborting due to 4 previous errors
 
diff --git a/tests/ui/rfcs/rfc-0000-never_patterns/diverges.rs b/tests/ui/rfcs/rfc-0000-never_patterns/diverges.rs
index 40aa2bd29e5..6f4b81b9b25 100644
--- a/tests/ui/rfcs/rfc-0000-never_patterns/diverges.rs
+++ b/tests/ui/rfcs/rfc-0000-never_patterns/diverges.rs
@@ -13,12 +13,12 @@ fn never_arg(!: Void) -> u32 {}
 
 fn ref_never_arg(&!: &Void) -> u32 {}
 
-// fn never_let() -> u32 {
-//     let ptr: *const Void = std::ptr::null();
-//     unsafe {
-//         let ! = *ptr;
-//     }
-// }
+fn never_let() -> u32 {
+    let ptr: *const Void = std::ptr::null();
+    unsafe {
+        let ! = *ptr;
+    }
+}
 
 fn never_match() -> u32 {
     let ptr: *const Void = std::ptr::null();