]> git.lizzy.rs Git - rust.git/blob - tests/ui/loops/loop-break-value.rs
Rollup merge of #106397 - compiler-errors:new-solver-impl-wc, r=lcnr
[rust.git] / tests / ui / loops / loop-break-value.rs
1 #![feature(never_type)]
2
3 fn main() {
4     let val: ! = loop { break break; };
5     //~^ ERROR mismatched types
6
7     loop {
8         if true {
9             break "asdf";
10         } else {
11             break 123; //~ ERROR mismatched types
12         }
13     };
14
15     let _: i32 = loop {
16         break "asdf"; //~ ERROR mismatched types
17     };
18
19     let _: i32 = 'outer_loop: loop {
20         loop {
21             break 'outer_loop "nope"; //~ ERROR mismatched types
22             break "ok";
23         };
24     };
25
26     'while_loop: while true { //~ WARN denote infinite loops with
27         break;
28         break (); //~ ERROR `break` with value from a `while` loop
29         loop {
30             break 'while_loop 123;
31             //~^ ERROR `break` with value from a `while` loop
32             break 456;
33             break 789;
34         };
35     }
36
37     while let Some(_) = Some(()) {
38         if break () { //~ ERROR `break` with value from a `while` loop
39         }
40     }
41
42     while let Some(_) = Some(()) {
43         break None;
44         //~^ ERROR `break` with value from a `while` loop
45     }
46
47     'while_let_loop: while let Some(_) = Some(()) {
48         loop {
49             break 'while_let_loop "nope";
50             //~^ ERROR `break` with value from a `while` loop
51             break 33;
52         };
53     }
54
55     for _ in &[1,2,3] {
56         break (); //~ ERROR `break` with value from a `for` loop
57         break [()];
58         //~^ ERROR `break` with value from a `for` loop
59     }
60
61     'for_loop: for _ in &[1,2,3] {
62         loop {
63             break Some(3);
64             break 'for_loop Some(17);
65             //~^ ERROR `break` with value from a `for` loop
66         };
67     }
68
69     let _: i32 = 'a: loop {
70         let _: () = 'b: loop {
71             break ('c: loop {
72                 break;
73                 break 'c 123; //~ ERROR mismatched types
74             });
75             break 'a 123;
76         };
77     };
78
79     loop {
80         break (break, break); //~ ERROR mismatched types
81     };
82
83     loop {
84         break;
85         break 2; //~ ERROR mismatched types
86     };
87
88     loop {
89         break 2;
90         break; //~ ERROR mismatched types
91         break 4;
92     };
93
94     'LOOP: for _ in 0 .. 9 {
95         break LOOP;
96         //~^ ERROR cannot find value `LOOP` in this scope
97     }
98 }