File tree Expand file tree Collapse file tree 2 files changed +56
-37
lines changed Expand file tree Collapse file tree 2 files changed +56
-37
lines changed Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ //! Tests type mismatches with `break` and diverging types in loops
2
+
3
+ #![ feature( never_type) ]
4
+
5
+ fn loop_break_return ( ) -> i32 {
6
+ let loop_value = loop {
7
+ break return 0 ;
8
+ } ; // ok
9
+ }
10
+
11
+ fn loop_break_loop ( ) -> i32 {
12
+ let loop_value = loop {
13
+ break loop { } ;
14
+ } ; // ok
15
+ }
16
+
17
+ fn loop_break_break ( ) -> i32 {
18
+ //~^ ERROR mismatched types
19
+ let loop_value = loop {
20
+ break break ;
21
+ } ;
22
+ }
23
+
24
+ fn loop_break_return_2 ( ) -> i32 {
25
+ let loop_value = loop {
26
+ break {
27
+ return 0 ;
28
+ ( )
29
+ } ;
30
+ } ; // ok
31
+ }
32
+
33
+ enum Void { }
34
+
35
+ fn get_void ( ) -> Void {
36
+ panic ! ( )
37
+ }
38
+
39
+ fn loop_break_void ( ) -> i32 {
40
+ //~^ ERROR mismatched types
41
+ let loop_value = loop {
42
+ break get_void ( ) ;
43
+ } ;
44
+ }
45
+
46
+ fn get_never ( ) -> ! {
47
+ panic ! ( )
48
+ }
49
+
50
+ fn loop_break_never ( ) -> i32 {
51
+ let loop_value = loop {
52
+ break get_never ( ) ;
53
+ } ; // ok
54
+ }
55
+
56
+ fn main ( ) { }
You can’t perform that action at this time.
0 commit comments