]> git.proxmox.com Git - rustc.git/blame - src/tools/clippy/tests/ui/while_let_loop.rs
Update upstream source from tag 'upstream/1.52.1+dfsg1'
[rustc.git] / src / tools / clippy / tests / ui / while_let_loop.rs
CommitLineData
f20569fa
XL
1#![warn(clippy::while_let_loop)]
2
3fn main() {
4 let y = Some(true);
5 loop {
6 if let Some(_x) = y {
7 let _v = 1;
8 } else {
9 break;
10 }
11 }
12
13 #[allow(clippy::never_loop)]
14 loop {
15 // no error, break is not in else clause
16 if let Some(_x) = y {
17 let _v = 1;
18 }
19 break;
20 }
21
22 loop {
23 match y {
24 Some(_x) => true,
25 None => break,
26 };
27 }
28
29 loop {
30 let x = match y {
31 Some(x) => x,
32 None => break,
33 };
34 let _x = x;
35 let _str = "foo";
36 }
37
38 loop {
39 let x = match y {
40 Some(x) => x,
41 None => break,
42 };
43 {
44 let _a = "bar";
45 };
46 {
47 let _b = "foobar";
48 }
49 }
50
51 loop {
52 // no error, else branch does something other than break
53 match y {
54 Some(_x) => true,
55 _ => {
56 let _z = 1;
57 break;
58 },
59 };
60 }
61
62 while let Some(x) = y {
63 // no error, obviously
64 println!("{}", x);
65 }
66
67 // #675, this used to have a wrong suggestion
68 loop {
69 let (e, l) = match "".split_whitespace().next() {
70 Some(word) => (word.is_empty(), word.len()),
71 None => break,
72 };
73
74 let _ = (e, l);
75 }
76}
77
78fn issue771() {
79 let mut a = 100;
80 let b = Some(true);
81 loop {
82 if a > 10 {
83 break;
84 }
85
86 match b {
87 Some(_) => a = 0,
88 None => break,
89 }
90 }
91}
92
93fn issue1017() {
94 let r: Result<u32, u32> = Ok(42);
95 let mut len = 1337;
96
97 loop {
98 match r {
99 Err(_) => len = 0,
100 Ok(length) => {
101 len = length;
102 break;
103 },
104 }
105 }
106}
107
108#[allow(clippy::never_loop)]
109fn issue1948() {
110 // should not trigger clippy::while_let_loop lint because break passes an expression
111 let a = Some(10);
112 let b = loop {
113 if let Some(c) = a {
114 break Some(c);
115 } else {
116 break None;
117 }
118 };
119}