]> git.lizzy.rs Git - rust.git/blob - tests/ui/redundant_pattern_matching.rs
iterate List by value
[rust.git] / tests / ui / redundant_pattern_matching.rs
1 // run-rustfix
2
3 #![warn(clippy::all)]
4 #![warn(clippy::redundant_pattern_matching)]
5 #![allow(clippy::unit_arg, unused_must_use, clippy::needless_bool, deprecated)]
6
7 fn main() {
8     if let Ok(_) = Ok::<i32, i32>(42) {}
9
10     if let Err(_) = Err::<i32, i32>(42) {}
11
12     if let None = None::<()> {}
13
14     if let Some(_) = Some(42) {}
15
16     if let Some(_) = Some(42) {
17         foo();
18     } else {
19         bar();
20     }
21
22     while let Some(_) = Some(42) {}
23
24     while let None = Some(42) {}
25
26     while let None = None::<()> {}
27
28     while let Ok(_) = Ok::<i32, i32>(10) {}
29
30     while let Err(_) = Ok::<i32, i32>(10) {}
31
32     let mut v = vec![1, 2, 3];
33     while let Some(_) = v.pop() {
34         foo();
35     }
36
37     if Ok::<i32, i32>(42).is_ok() {}
38
39     if Err::<i32, i32>(42).is_err() {}
40
41     if None::<i32>.is_none() {}
42
43     if Some(42).is_some() {}
44
45     if let Ok(x) = Ok::<i32, i32>(42) {
46         println!("{}", x);
47     }
48
49     match Ok::<i32, i32>(42) {
50         Ok(_) => true,
51         Err(_) => false,
52     };
53
54     match Ok::<i32, i32>(42) {
55         Ok(_) => false,
56         Err(_) => true,
57     };
58
59     match Err::<i32, i32>(42) {
60         Ok(_) => false,
61         Err(_) => true,
62     };
63
64     match Err::<i32, i32>(42) {
65         Ok(_) => true,
66         Err(_) => false,
67     };
68
69     match Some(42) {
70         Some(_) => true,
71         None => false,
72     };
73
74     match None::<()> {
75         Some(_) => false,
76         None => true,
77     };
78
79     let _ = match None::<()> {
80         Some(_) => false,
81         None => true,
82     };
83
84     let _ = if let Ok(_) = Ok::<usize, ()>(4) { true } else { false };
85
86     let opt = Some(false);
87     let x = if let Some(_) = opt { true } else { false };
88     takes_bool(x);
89
90     issue5504();
91
92     let _ = if let Some(_) = gen_opt() {
93         1
94     } else if let None = gen_opt() {
95         2
96     } else if let Ok(_) = gen_res() {
97         3
98     } else if let Err(_) = gen_res() {
99         4
100     } else {
101         5
102     };
103 }
104
105 fn gen_opt() -> Option<()> {
106     None
107 }
108
109 fn gen_res() -> Result<(), ()> {
110     Ok(())
111 }
112
113 fn takes_bool(_: bool) {}
114
115 fn foo() {}
116
117 fn bar() {}
118
119 macro_rules! m {
120     () => {
121         Some(42u32)
122     };
123 }
124
125 fn issue5504() {
126     fn result_opt() -> Result<Option<i32>, i32> {
127         Err(42)
128     }
129
130     fn try_result_opt() -> Result<i32, i32> {
131         while let Some(_) = r#try!(result_opt()) {}
132         if let Some(_) = r#try!(result_opt()) {}
133         Ok(42)
134     }
135
136     try_result_opt();
137
138     if let Some(_) = m!() {}
139     while let Some(_) = m!() {}
140 }