Skip to content

Commit

Permalink
Auto merge of #6700 - daxpedda:panics-doc-unreachable, r=llogiq
Browse files Browse the repository at this point in the history
Fix missing_panics_doc warning on `unreachable!`.

Fixes #6699.

Are there any other test-cases I should cover?

changelog: [`missing_panics_doc`](https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc): No longer lints on [`unreachable!`](https://doc.rust-lang.org/std/macro.unreachable.html)
  • Loading branch information
bors committed Feb 12, 2021
2 parents 605e9ba + 37f9782 commit 047f3e1
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 3 deletions.
5 changes: 3 additions & 2 deletions clippy_lints/src/doc.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::utils::{
implements_trait, is_entrypoint_fn, is_type_diagnostic_item, match_panic_def_id, method_chain_args, return_ty,
span_lint, span_lint_and_note,
implements_trait, is_entrypoint_fn, is_expn_of, is_type_diagnostic_item, match_panic_def_id, method_chain_args,
return_ty, span_lint, span_lint_and_note,
};
use if_chain::if_chain;
use itertools::Itertools;
Expand Down Expand Up @@ -699,6 +699,7 @@ impl<'a, 'tcx> Visitor<'tcx> for FindPanicUnwrap<'a, 'tcx> {
if let ExprKind::Path(QPath::Resolved(_, ref path)) = func_expr.kind;
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();
then {
self.panic_span = Some(expr.span);
}
Expand Down
27 changes: 27 additions & 0 deletions tests/ui/doc_panics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,15 @@ pub fn inner_body(opt: Option<u32>) {
});
}

/// This needs to be documented
pub fn unreachable_and_panic() {
if true {
unreachable!()
} else {
panic!()
}
}

/// This is documented
///
/// # Panics
Expand Down Expand Up @@ -69,6 +78,19 @@ pub fn todo_documented() {
todo!()
}

/// This is documented
///
/// # Panics
///
/// We still need to do this part
pub fn unreachable_amd_panic_documented() {
if true {
unreachable!()
} else {
panic!()
}
}

/// This is okay because it is private
fn unwrap_private() {
let result = Err("Hi");
Expand All @@ -93,3 +115,8 @@ fn inner_body_private(opt: Option<u32>) {
}
});
}

/// This is okay because unreachable
pub fn unreachable() {
unreachable!("This function panics")
}
21 changes: 20 additions & 1 deletion tests/ui/doc_panics.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,24 @@ LL | panic!()
| ^^^^^^^^
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to 4 previous errors
error: docs for function which may panic missing `# Panics` section
--> $DIR/doc_panics.rs:32:1
|
LL | / pub fn unreachable_and_panic() {
LL | | if true {
LL | | unreachable!()
LL | | } else {
LL | | panic!()
LL | | }
LL | | }
| |_^
|
note: first possible panic found here
--> $DIR/doc_panics.rs:36:9
|
LL | panic!()
| ^^^^^^^^
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to 5 previous errors

0 comments on commit 047f3e1

Please sign in to comment.