Skip to content

Commit c5a4e07

Browse files
committed
Use -> ! to test divergence
1 parent d1f1075 commit c5a4e07

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

tests/ui/rfcs/rfc-0000-never_patterns/diverges.rs

+8-5
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,24 @@ enum Void {}
99

1010
// A never pattern alone diverges.
1111

12-
fn never_arg(!: Void) -> u32 {}
12+
fn never_arg(!: Void) -> ! {}
1313

14-
fn ref_never_arg(&!: &Void) -> u32 {}
14+
fn never_arg_returns_anything<T>(!: Void) -> T {}
1515

16-
fn never_let() -> u32 {
16+
fn ref_never_arg(&!: &Void) -> ! {}
17+
18+
fn never_let() -> ! {
1719
let ptr: *const Void = std::ptr::null();
1820
unsafe {
1921
let ! = *ptr;
2022
}
2123
}
2224

23-
fn never_match() -> u32 {
25+
fn never_match() -> ! {
2426
let ptr: *const Void = std::ptr::null();
2527
unsafe {
2628
match *ptr { ! };
2729
}
28-
println!(); // Ensures this typechecks because of divergence.
30+
// Ensures this typechecks because of divergence and not the type of the match expression.
31+
println!();
2932
}

0 commit comments

Comments
 (0)