about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNadrieril <nadrieril+git@gmail.com>2024-01-22 16:14:17 +0100
committerNadrieril <nadrieril+git@gmail.com>2024-01-22 16:15:44 +0100
commitc5a4e074f052d0528451035df58c0f612ee45118 (patch)
treeb4d03406697fe0e5d917967b99dcfea1d33f56e8
parentd1f1075931983be0a2ae91905fe8a6da50149d3d (diff)
downloadrust-c5a4e074f052d0528451035df58c0f612ee45118.tar.gz
rust-c5a4e074f052d0528451035df58c0f612ee45118.zip
Use `-> !` to test divergence
-rw-r--r--tests/ui/rfcs/rfc-0000-never_patterns/diverges.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/tests/ui/rfcs/rfc-0000-never_patterns/diverges.rs b/tests/ui/rfcs/rfc-0000-never_patterns/diverges.rs
index 6f4b81b9b25..57151e246ff 100644
--- a/tests/ui/rfcs/rfc-0000-never_patterns/diverges.rs
+++ b/tests/ui/rfcs/rfc-0000-never_patterns/diverges.rs
@@ -9,21 +9,24 @@ enum Void {}
 
 // A never pattern alone diverges.
 
-fn never_arg(!: Void) -> u32 {}
+fn never_arg(!: Void) -> ! {}
 
-fn ref_never_arg(&!: &Void) -> u32 {}
+fn never_arg_returns_anything<T>(!: Void) -> T {}
 
-fn never_let() -> u32 {
+fn ref_never_arg(&!: &Void) -> ! {}
+
+fn never_let() -> ! {
     let ptr: *const Void = std::ptr::null();
     unsafe {
         let ! = *ptr;
     }
 }
 
-fn never_match() -> u32 {
+fn never_match() -> ! {
     let ptr: *const Void = std::ptr::null();
     unsafe {
         match *ptr { ! };
     }
-    println!(); // Ensures this typechecks because of divergence.
+    // Ensures this typechecks because of divergence and not the type of the match expression.
+    println!();
 }