2 #![feature(exclusive_range_pattern)]
6 #![allow(unused, if_let_redundant_pattern_matching)]
7 #![deny(single_match_else)]
11 enum Foo { Bar, Baz(u8) }
20 static NODE: ExprNode = ExprNode::Unicorns;
25 fn unwrap_addr() -> Option<&'static ExprNode> {
26 match ExprNode::Butterflies {
30 ExprNode::ExprAddrOf => Some(&NODE),
31 _ => { let x = 5; None },
42 Some(y) => { println!("{:?}", y); }
51 (2...3, 7...9) => dummy(),
55 // Not linted (pattern guards used)
57 Some(y) if y == 0 => println!("{:?}", y),
61 // Not linted (no block with statements in the single arm)
63 (2...3, 7...9) => println!("{:?}", z),
64 _ => println!("nope"),
68 fn single_match_know_enum() {
70 let y : Result<_, i8> = Ok(1i8);
88 let c = Cow::Borrowed("");
94 Cow::Borrowed(..) => dummy(),
101 Bar => println!("42"),
106 Baz(_) => println!("42"),
112 let test: bool = true;
136 false => { println!("Noooo!"); }
143 false => { println!("Noooo!"); }
152 false => { println!("Noooo!"); }
160 false => { println!("Noooo!"); }
161 true => { println!("Yes!"); }
179 &Some(v) => println!("{:?}", v),
180 &None => println!("none"),
182 match v { // this doesn't trigger, we have a different pattern
183 &Some(v) => println!("some"),
184 other => println!("other"),
192 &(v, 1) => println!("{}", v),
193 _ => println!("none"),
195 // special case: using & both in expr and pats
201 &Some(v) => println!("{:?}", v),
202 &None => println!("none"),
204 // false positive: only wildcard pattern
207 _ => println!("none"),
231 0 ... 10 => println!("0 ... 10"),
232 0 ... 11 => println!("0 ... 11"),
237 0 ... 5 => println!("0 ... 5"),
238 6 ... 7 => println!("6 ... 7"),
239 FOO ... 11 => println!("0 ... 11"),
245 0 ... 5 => println!("0 ... 5"),
251 0 ... 2 => println!("0 ... 2"),
256 0 ... 10 => println!("0 ... 10"),
257 11 ... 50 => println!("11 ... 50"),
263 0 .. 2 => println!("0 .. 2"),
268 0 .. 10 => println!("0 .. 10"),
269 10 .. 50 => println!("10 .. 50"),
274 0 .. 11 => println!("0 .. 11"),
275 0 ... 11 => println!("0 ... 11"),
279 if let None = Some(42) {
281 } else if let None = Some(42) {
282 // another nothing :-)