1 #![feature(exclusive_range_pattern)]
3 #![allow(unused, clippy::redundant_pattern_matching, clippy::too_many_lines)]
4 #![warn(clippy::match_same_arms)]
8 fn match_wild_err_arm() {
9 let x: Result<i32, &str> = Ok(3);
12 Ok(3) => println!("ok"),
13 Ok(_) => println!("ok"),
14 Err(_) => panic!("err"),
18 Ok(3) => println!("ok"),
19 Ok(_) => println!("ok"),
24 Ok(3) => println!("ok"),
25 Ok(_) => println!("ok"),
31 // Allowed when not with `panic!` block.
33 Ok(3) => println!("ok"),
34 Ok(_) => println!("ok"),
35 Err(_) => println!("err"),
38 // Allowed when used with `unreachable!`.
40 Ok(3) => println!("ok"),
41 Ok(_) => println!("ok"),
42 Err(_) => unreachable!(),
46 Ok(3) => println!("ok"),
47 Ok(_) => println!("ok"),
48 Err(_) => unreachable!(),
52 Ok(3) => println!("ok"),
53 Ok(_) => println!("ok"),
59 // No warning because of the guard.
61 Ok(x) if x * x == 64 => println!("ok"),
62 Ok(_) => println!("ok"),
63 Err(_) => println!("err"),
66 // This used to be a false positive; see issue #1996.
68 Ok(3) => println!("ok"),
69 Ok(x) if x * x == 64 => println!("ok 64"),
70 Ok(_) => println!("ok"),
71 Err(_) => println!("err"),
74 match (x, Some(1i32)) {
75 (Ok(x), Some(_)) => println!("ok {}", x),
76 (Ok(_), Some(x)) => println!("ok {}", x),
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),
87 // Because of a bug, no warning was generated for this case before #2251.
89 Ok(_tmp) => println!("ok"),
90 Ok(3) => println!("ok"),
91 Ok(_) => println!("ok"),