mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-27 23:20:39 +00:00
Auto merge of #6996 - Y-Nak:missing_panics_doc, r=Manishearth
Allow missing panics doc if the panics occur only when debug-assertions is specified fixes #6970 changelog: `missing_panics_doc`: Allow missing panics doc if the panics occur only when `debug-assertions` is specified.
This commit is contained in:
commit
0e06b3c5f3
3 changed files with 24 additions and 10 deletions
|
@ -715,6 +715,7 @@ impl<'a, 'tcx> Visitor<'tcx> for FindPanicUnwrap<'a, 'tcx> {
|
|||
if let Some(path_def_id) = path.res.opt_def_id();
|
||||
if match_panic_def_id(self.cx, path_def_id);
|
||||
if is_expn_of(expr.span, "unreachable").is_none();
|
||||
if !is_expn_of_debug_assertions(expr.span);
|
||||
then {
|
||||
self.panic_span = Some(expr.span);
|
||||
}
|
||||
|
@ -738,3 +739,8 @@ impl<'a, 'tcx> Visitor<'tcx> for FindPanicUnwrap<'a, 'tcx> {
|
|||
NestedVisitorMap::OnlyBodies(self.cx.tcx.hir())
|
||||
}
|
||||
}
|
||||
|
||||
fn is_expn_of_debug_assertions(span: Span) -> bool {
|
||||
const MACRO_NAMES: &[&str] = &["debug_assert", "debug_assert_eq", "debug_assert_ne"];
|
||||
MACRO_NAMES.iter().any(|name| is_expn_of(span, name).is_some())
|
||||
}
|
||||
|
|
|
@ -112,3 +112,11 @@ fn inner_body_private(opt: Option<u32>) {
|
|||
pub fn unreachable() {
|
||||
unreachable!("This function panics")
|
||||
}
|
||||
|
||||
/// #6970.
|
||||
/// This is okay because it is expansion of `debug_assert` family.
|
||||
pub fn debug_assertions() {
|
||||
debug_assert!(false);
|
||||
debug_assert_eq!(1, 2);
|
||||
debug_assert_ne!(1, 2);
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
error: docs for function which may panic missing `# Panics` section
|
||||
--> $DIR/doc_panics.rs:7:1
|
||||
--> $DIR/missing_panics_doc.rs:7:1
|
||||
|
|
||||
LL | / pub fn unwrap() {
|
||||
LL | | let result = Err("Hi");
|
||||
|
@ -9,13 +9,13 @@ LL | | }
|
|||
|
|
||||
= note: `-D clippy::missing-panics-doc` implied by `-D warnings`
|
||||
note: first possible panic found here
|
||||
--> $DIR/doc_panics.rs:9:5
|
||||
--> $DIR/missing_panics_doc.rs:9:5
|
||||
|
|
||||
LL | result.unwrap()
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
error: docs for function which may panic missing `# Panics` section
|
||||
--> $DIR/doc_panics.rs:13:1
|
||||
--> $DIR/missing_panics_doc.rs:13:1
|
||||
|
|
||||
LL | / pub fn panic() {
|
||||
LL | | panic!("This function panics")
|
||||
|
@ -23,14 +23,14 @@ LL | | }
|
|||
| |_^
|
||||
|
|
||||
note: first possible panic found here
|
||||
--> $DIR/doc_panics.rs:14:5
|
||||
--> $DIR/missing_panics_doc.rs:14:5
|
||||
|
|
||||
LL | panic!("This function panics")
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: docs for function which may panic missing `# Panics` section
|
||||
--> $DIR/doc_panics.rs:18:1
|
||||
--> $DIR/missing_panics_doc.rs:18:1
|
||||
|
|
||||
LL | / pub fn todo() {
|
||||
LL | | todo!()
|
||||
|
@ -38,14 +38,14 @@ LL | | }
|
|||
| |_^
|
||||
|
|
||||
note: first possible panic found here
|
||||
--> $DIR/doc_panics.rs:19:5
|
||||
--> $DIR/missing_panics_doc.rs:19:5
|
||||
|
|
||||
LL | todo!()
|
||||
| ^^^^^^^
|
||||
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: docs for function which may panic missing `# Panics` section
|
||||
--> $DIR/doc_panics.rs:23:1
|
||||
--> $DIR/missing_panics_doc.rs:23:1
|
||||
|
|
||||
LL | / pub fn inner_body(opt: Option<u32>) {
|
||||
LL | | opt.map(|x| {
|
||||
|
@ -57,14 +57,14 @@ LL | | }
|
|||
| |_^
|
||||
|
|
||||
note: first possible panic found here
|
||||
--> $DIR/doc_panics.rs:26:13
|
||||
--> $DIR/missing_panics_doc.rs:26:13
|
||||
|
|
||||
LL | panic!()
|
||||
| ^^^^^^^^
|
||||
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: docs for function which may panic missing `# Panics` section
|
||||
--> $DIR/doc_panics.rs:32:1
|
||||
--> $DIR/missing_panics_doc.rs:32:1
|
||||
|
|
||||
LL | / pub fn unreachable_and_panic() {
|
||||
LL | | if true { unreachable!() } else { panic!() }
|
||||
|
@ -72,7 +72,7 @@ LL | | }
|
|||
| |_^
|
||||
|
|
||||
note: first possible panic found here
|
||||
--> $DIR/doc_panics.rs:33:39
|
||||
--> $DIR/missing_panics_doc.rs:33:39
|
||||
|
|
||||
LL | if true { unreachable!() } else { panic!() }
|
||||
| ^^^^^^^^
|
Loading…
Reference in a new issue