#![feature(exclusive_range_pattern)] #![allow(clippy::match_same_arms, dead_code)] #![warn(clippy::match_wild_err_arm)] fn issue_10635() { enum Error { A, B, } // Don't trigger in const contexts. Const unwrap is not yet stable const X: () = match Ok::<_, Error>(()) { Ok(x) => x, Err(_) => panic!(), }; } fn match_wild_err_arm() { let x: Result = Ok(3); match x { Ok(3) => println!("ok"), Ok(_) => println!("ok"), Err(_) => panic!("err"), //~^ ERROR: `Err(_)` matches all errors //~| NOTE: match each error separately or use the error output, or use `.expect(ms } match x { Ok(3) => println!("ok"), Ok(_) => println!("ok"), Err(_) => panic!(), //~^ ERROR: `Err(_)` matches all errors //~| NOTE: match each error separately or use the error output, or use `.expect(ms } match x { Ok(3) => println!("ok"), Ok(_) => println!("ok"), Err(_) => { //~^ ERROR: `Err(_)` matches all errors //~| NOTE: match each error separately or use the error output, or use `.expect(ms panic!(); }, } match x { Ok(3) => println!("ok"), Ok(_) => println!("ok"), Err(_e) => panic!(), //~^ ERROR: `Err(_e)` matches all errors //~| NOTE: match each error separately or use the error output, or use `.expect(ms } // Allowed when used in `panic!`. match x { Ok(3) => println!("ok"), Ok(_) => println!("ok"), Err(_e) => panic!("{}", _e), } // Allowed when not with `panic!` block. match x { Ok(3) => println!("ok"), Ok(_) => println!("ok"), Err(_) => println!("err"), } // Allowed when used with `unreachable!`. match x { Ok(3) => println!("ok"), Ok(_) => println!("ok"), Err(_) => unreachable!(), } // Allowed when used with `unreachable!`. match x { Ok(3) => println!("ok"), Ok(_) => println!("ok"), Err(_) => { unreachable!(); }, } } fn main() {}