]> git.lizzy.rs Git - rust.git/blob - tests/ui/matches.rs
Auto merge of #4314 - chansuke:add-negation-to-is_empty, r=flip1995
[rust.git] / tests / ui / matches.rs
1 #![feature(exclusive_range_pattern)]
2 #![warn(clippy::all)]
3 #![allow(unused, clippy::redundant_pattern_matching, clippy::too_many_lines)]
4 #![warn(clippy::match_same_arms)]
5
6 fn dummy() {}
7
8 fn match_wild_err_arm() {
9     let x: Result<i32, &str> = Ok(3);
10
11     match x {
12         Ok(3) => println!("ok"),
13         Ok(_) => println!("ok"),
14         Err(_) => panic!("err"),
15     }
16
17     match x {
18         Ok(3) => println!("ok"),
19         Ok(_) => println!("ok"),
20         Err(_) => panic!(),
21     }
22
23     match x {
24         Ok(3) => println!("ok"),
25         Ok(_) => println!("ok"),
26         Err(_) => {
27             panic!();
28         },
29     }
30
31     // Allowed when not with `panic!` block.
32     match x {
33         Ok(3) => println!("ok"),
34         Ok(_) => println!("ok"),
35         Err(_) => println!("err"),
36     }
37
38     // Allowed when used with `unreachable!`.
39     match x {
40         Ok(3) => println!("ok"),
41         Ok(_) => println!("ok"),
42         Err(_) => unreachable!(),
43     }
44
45     match x {
46         Ok(3) => println!("ok"),
47         Ok(_) => println!("ok"),
48         Err(_) => unreachable!(),
49     }
50
51     match x {
52         Ok(3) => println!("ok"),
53         Ok(_) => println!("ok"),
54         Err(_) => {
55             unreachable!();
56         },
57     }
58
59     // No warning because of the guard.
60     match x {
61         Ok(x) if x * x == 64 => println!("ok"),
62         Ok(_) => println!("ok"),
63         Err(_) => println!("err"),
64     }
65
66     // This used to be a false positive; see issue #1996.
67     match x {
68         Ok(3) => println!("ok"),
69         Ok(x) if x * x == 64 => println!("ok 64"),
70         Ok(_) => println!("ok"),
71         Err(_) => println!("err"),
72     }
73
74     match (x, Some(1i32)) {
75         (Ok(x), Some(_)) => println!("ok {}", x),
76         (Ok(_), Some(x)) => println!("ok {}", x),
77         _ => println!("err"),
78     }
79
80     // No warning; different types for `x`.
81     match (x, Some(1.0f64)) {
82         (Ok(x), Some(_)) => println!("ok {}", x),
83         (Ok(_), Some(x)) => println!("ok {}", x),
84         _ => println!("err"),
85     }
86
87     // Because of a bug, no warning was generated for this case before #2251.
88     match x {
89         Ok(_tmp) => println!("ok"),
90         Ok(3) => println!("ok"),
91         Ok(_) => println!("ok"),
92         Err(_) => {
93             unreachable!();
94         },
95     }
96 }
97
98 fn main() {}