#![warn(clippy::panic_in_result_fn)] #![allow(clippy::unnecessary_wraps)] struct A; impl A { fn result_with_panic() -> Result // should emit lint //~^ ERROR: used `panic!()` or assertion in a function that returns `Result` { panic!("error"); } fn result_with_unimplemented() -> Result // should emit lint { unimplemented!(); } fn result_with_unreachable() -> Result // should emit lint { unreachable!(); } fn result_with_todo() -> Result // should emit lint { todo!("Finish this"); } fn other_with_panic() // should not emit lint { panic!(""); } fn other_with_unreachable() // should not emit lint { unreachable!(); } fn other_with_unimplemented() // should not emit lint { unimplemented!(); } fn other_with_todo() // should not emit lint { todo!("finish this") } fn result_without_banned_functions() -> Result // should not emit lint { Ok(true) } } fn function_result_with_panic() -> Result // should emit lint //~^ ERROR: used `panic!()` or assertion in a function that returns `Result` { panic!("error"); } fn in_closure() -> Result { let c = || panic!(); c() } fn todo() { println!("something"); } fn function_result_with_custom_todo() -> Result // should not emit lint { todo(); Ok(true) } fn main() -> Result<(), String> { todo!("finish main method"); Ok(()) }