786f874c34
changelog: none Sorry, this is a big one. A lot of interrelated changes and I wanted to put the new utils to use to make sure they are somewhat battle-tested. We may want to divide some of the lint-specific refactoring commits into batches for smaller reviewing tasks. I could also split into more PRs. Introduces a bunch of new utils at `clippy_utils::macros::...`. Please read through the docs and give any feedback! I'm happy to introduce `MacroCall` and various functions to retrieve an instance. It feels like the missing puzzle piece. I'm also introducing `ExpnId` from rustc as "useful for Clippy too". `@rust-lang/clippy` Fixes #7843 by not parsing every node of macro implementations, at least the major offenders. I probably want to get rid of `is_expn_of` at some point.
100 lines
4.0 KiB
Plaintext
100 lines
4.0 KiB
Plaintext
error: used `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertion in a function that returns `Result`
|
|
--> $DIR/panic_in_result_fn.rs:6:5
|
|
|
|
|
LL | / fn result_with_panic() -> Result<bool, String> // should emit lint
|
|
LL | | {
|
|
LL | | panic!("error");
|
|
LL | | }
|
|
| |_____^
|
|
|
|
|
= note: `-D clippy::panic-in-result-fn` implied by `-D warnings`
|
|
= help: `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertions should not be used in a function that returns `Result` as `Result` is expected to return an error instead of crashing
|
|
note: return Err() instead of panicking
|
|
--> $DIR/panic_in_result_fn.rs:8:9
|
|
|
|
|
LL | panic!("error");
|
|
| ^^^^^^^^^^^^^^^
|
|
|
|
error: used `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertion in a function that returns `Result`
|
|
--> $DIR/panic_in_result_fn.rs:11:5
|
|
|
|
|
LL | / fn result_with_unimplemented() -> Result<bool, String> // should emit lint
|
|
LL | | {
|
|
LL | | unimplemented!();
|
|
LL | | }
|
|
| |_____^
|
|
|
|
|
= help: `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertions should not be used in a function that returns `Result` as `Result` is expected to return an error instead of crashing
|
|
note: return Err() instead of panicking
|
|
--> $DIR/panic_in_result_fn.rs:13:9
|
|
|
|
|
LL | unimplemented!();
|
|
| ^^^^^^^^^^^^^^^^
|
|
|
|
error: used `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertion in a function that returns `Result`
|
|
--> $DIR/panic_in_result_fn.rs:16:5
|
|
|
|
|
LL | / fn result_with_unreachable() -> Result<bool, String> // should emit lint
|
|
LL | | {
|
|
LL | | unreachable!();
|
|
LL | | }
|
|
| |_____^
|
|
|
|
|
= help: `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertions should not be used in a function that returns `Result` as `Result` is expected to return an error instead of crashing
|
|
note: return Err() instead of panicking
|
|
--> $DIR/panic_in_result_fn.rs:18:9
|
|
|
|
|
LL | unreachable!();
|
|
| ^^^^^^^^^^^^^^
|
|
|
|
error: used `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertion in a function that returns `Result`
|
|
--> $DIR/panic_in_result_fn.rs:21:5
|
|
|
|
|
LL | / fn result_with_todo() -> Result<bool, String> // should emit lint
|
|
LL | | {
|
|
LL | | todo!("Finish this");
|
|
LL | | }
|
|
| |_____^
|
|
|
|
|
= help: `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertions should not be used in a function that returns `Result` as `Result` is expected to return an error instead of crashing
|
|
note: return Err() instead of panicking
|
|
--> $DIR/panic_in_result_fn.rs:23:9
|
|
|
|
|
LL | todo!("Finish this");
|
|
| ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: used `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertion in a function that returns `Result`
|
|
--> $DIR/panic_in_result_fn.rs:52:1
|
|
|
|
|
LL | / fn function_result_with_panic() -> Result<bool, String> // should emit lint
|
|
LL | | {
|
|
LL | | panic!("error");
|
|
LL | | }
|
|
| |_^
|
|
|
|
|
= help: `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertions should not be used in a function that returns `Result` as `Result` is expected to return an error instead of crashing
|
|
note: return Err() instead of panicking
|
|
--> $DIR/panic_in_result_fn.rs:54:5
|
|
|
|
|
LL | panic!("error");
|
|
| ^^^^^^^^^^^^^^^
|
|
|
|
error: used `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertion in a function that returns `Result`
|
|
--> $DIR/panic_in_result_fn.rs:67:1
|
|
|
|
|
LL | / fn main() -> Result<(), String> {
|
|
LL | | todo!("finish main method");
|
|
LL | | Ok(())
|
|
LL | | }
|
|
| |_^
|
|
|
|
|
= help: `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertions should not be used in a function that returns `Result` as `Result` is expected to return an error instead of crashing
|
|
note: return Err() instead of panicking
|
|
--> $DIR/panic_in_result_fn.rs:68:5
|
|
|
|
|
LL | todo!("finish main method");
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: aborting due to 6 previous errors
|
|
|