mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-12-01 08:59:23 +00:00
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.
54 lines
2.3 KiB
Text
54 lines
2.3 KiB
Text
error: used `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertion in a function that returns `Result`
|
|
--> $DIR/panic_in_result_fn_assertions.rs:7:5
|
|
|
|
|
LL | / fn result_with_assert_with_message(x: i32) -> Result<bool, String> // should emit lint
|
|
LL | | {
|
|
LL | | assert!(x == 5, "wrong argument");
|
|
LL | | Ok(true)
|
|
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_assertions.rs:9:9
|
|
|
|
|
LL | assert!(x == 5, "wrong argument");
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: used `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertion in a function that returns `Result`
|
|
--> $DIR/panic_in_result_fn_assertions.rs:13:5
|
|
|
|
|
LL | / fn result_with_assert_eq(x: i32) -> Result<bool, String> // should emit lint
|
|
LL | | {
|
|
LL | | assert_eq!(x, 5);
|
|
LL | | Ok(true)
|
|
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_assertions.rs:15:9
|
|
|
|
|
LL | assert_eq!(x, 5);
|
|
| ^^^^^^^^^^^^^^^^
|
|
|
|
error: used `unimplemented!()`, `unreachable!()`, `todo!()`, `panic!()` or assertion in a function that returns `Result`
|
|
--> $DIR/panic_in_result_fn_assertions.rs:19:5
|
|
|
|
|
LL | / fn result_with_assert_ne(x: i32) -> Result<bool, String> // should emit lint
|
|
LL | | {
|
|
LL | | assert_ne!(x, 1);
|
|
LL | | Ok(true)
|
|
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_assertions.rs:21:9
|
|
|
|
|
LL | assert_ne!(x, 1);
|
|
| ^^^^^^^^^^^^^^^^
|
|
|
|
error: aborting due to 3 previous errors
|
|
|