| //@aux-build:proc_macro_derive.rs | |
| #![warn(clippy::ignored_unit_patterns)] | |
| #![allow(clippy::let_unit_value, clippy::redundant_pattern_matching)] | |
| #![expect(clippy::needless_borrow, clippy::single_match)] | |
| fn foo() -> Result<(), ()> { | |
| unimplemented!() | |
| } | |
| fn main() { | |
| match foo() { | |
| Ok(_) => {}, //~ ignored_unit_patterns | |
| Err(_) => {}, //~ ignored_unit_patterns | |
| } | |
| 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; | |
| 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; | |
| } | |
| } |