//@aux-build:proc_macro_derive.rs #![warn(clippy::ignored_unit_patterns)] #![allow( clippy::let_unit_value, clippy::redundant_pattern_matching, clippy::single_match, clippy::needless_borrow )] fn foo() -> Result<(), ()> { unimplemented!() } fn main() { match foo() { Ok(()) => {}, //~ ERROR: matching over `()` is more explicit Err(()) => {}, //~ ERROR: matching over `()` is more explicit } if let Ok(()) = foo() {} //~^ ERROR: matching over `()` is more explicit let _ = foo().map_err(|()| todo!()); //~^ ERROR: matching over `()` is more explicit println!("{:?}", match foo() { Ok(()) => {}, //~^ ERROR: matching over `()` is more explicit Err(()) => {}, //~^ ERROR: matching over `()` is more explicit }); } // ignored_unit_patterns in derive macro should be ok #[derive(proc_macro_derive::StructIgnoredUnitPattern)] pub struct B; #[allow(unused)] pub fn moo(_: ()) { let () = foo().unwrap(); //~^ ERROR: matching over `()` is more explicit let _: () = foo().unwrap(); let _: () = (); } fn test_unit_ref_1() { let x: (usize, &&&&&()) = (1, &&&&&&()); match x { (1, ()) => unimplemented!(), //~^ ERROR: matching over `()` is more explicit _ => unimplemented!(), }; } fn test_unit_ref_2(v: &[(usize, ())]) { for (x, ()) in v { //~^ ERROR: matching over `()` is more explicit let _ = x; } }