]> git.lizzy.rs Git - rust.git/blob - src/test/ui/break-diverging-value.rs
Add tests for uninhabited types
[rust.git] / src / test / ui / break-diverging-value.rs
1 #![feature(never_type)]
2
3 fn loop_break_return() -> i32 {
4     let loop_value = loop { break return 0 }; // ok
5 }
6
7 fn loop_break_loop() -> i32 {
8     let loop_value = loop { break loop {} }; // ok
9 }
10
11 fn loop_break_break() -> i32 { //~ ERROR mismatched types
12     let loop_value = loop { break break };
13 }
14
15 fn loop_break_return_2() -> i32 { //~ ERROR mismatched types
16     let loop_value = loop { break { return; () } };
17     //~^ ERROR `return;` in a function whose return type is not `()`
18 }
19
20 enum Void {}
21
22 fn get_void() -> Void {
23     panic!()
24 }
25
26 fn loop_break_void() -> i32 { //~ ERROR mismatched types
27     let loop_value = loop { break get_void() };
28 }
29
30 fn get_never() -> ! {
31     panic!()
32 }
33
34 fn loop_break_never() -> i32 {
35     let loop_value = loop { break get_never() }; // ok
36 }
37
38 fn main() {}