]> git.lizzy.rs Git - rust.git/blob - tests/ui/never_loop.rs
Merge pull request #2052 from topecongiro/issue-1990
[rust.git] / tests / ui / never_loop.rs
1 #![feature(plugin)]
2 #![plugin(clippy)]
3 #![allow(single_match, unused_assignments, unused_variables)]
4
5 fn test1() {
6     let mut x = 0;
7     loop { // never_loop
8         x += 1;
9         if x == 1 {
10             return
11         }
12         break;
13     }
14 }
15
16 fn test2() {
17     let mut x = 0;
18     loop {
19         x += 1;
20         if x == 1 {
21             break
22         }
23     }
24 }
25
26 fn test3() {
27     let mut x = 0;
28     loop { // never loops
29         x += 1;
30         break
31     }
32 }
33
34 fn test4() {
35     let mut x = 1;
36     loop {
37         x += 1;
38         match x {
39             5 => return,
40             _ => (),
41         }
42     }
43 }
44
45 fn test5() {
46     let i = 0;
47         loop { // never loops
48         while i == 0 { // never loops
49             break
50         }
51         return
52         }
53 }
54
55 fn test6() {
56     let mut x = 0;
57     'outer: loop {
58         x += 1;
59                 loop { // never loops
60             if x == 5 { break }
61                         continue 'outer
62                 }
63                 return
64         }
65 }
66
67 fn test7() {
68     let mut x = 0;
69     loop {
70         x += 1;
71         match x {
72             1 => continue,
73             _ => (),
74         }
75         return
76     }
77 }
78
79 fn test8() {
80     let mut x = 0;
81     loop {
82         x += 1;
83         match x {
84             5 => return,
85             _ => continue,
86         }
87     }
88 }
89
90 fn test9() {
91     let x = Some(1);
92     while let Some(y) = x { // never loops
93         return
94     }
95 }
96
97 fn test10() {
98     for x in 0..10 { // never loops
99         match x {
100             1 => break,
101             _ => return,
102         }
103     }
104 }
105
106 fn test11<F: FnMut() -> i32>(mut f: F) {
107     loop {
108         return match f() {
109             1 => continue,
110             _ => (),
111         }
112     }
113 }
114
115 pub fn test12(a: bool, b: bool) {
116     'label: loop {
117         loop {
118             if a {
119                 continue 'label;
120             }
121             if b {
122                 break;
123             }
124         }
125         break;
126     }
127 }
128
129 fn main() {
130     test1();
131     test2();
132     test3();
133     test4();
134     test5();
135     test6();
136     test7();
137     test8();
138     test9();
139     test10();
140     test11(|| 0);
141     test12(true, false);
142 }
143