diff --git a/clippy_lints/src/doc.rs b/clippy_lints/src/doc.rs index 1348f7530f4..ae06c2c60be 100644 --- a/clippy_lints/src/doc.rs +++ b/clippy_lints/src/doc.rs @@ -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; @@ -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); } diff --git a/tests/ui/doc_panics.rs b/tests/ui/doc_panics.rs index 7ef932f367b..a3b9cbb5114 100644 --- a/tests/ui/doc_panics.rs +++ b/tests/ui/doc_panics.rs @@ -93,3 +93,8 @@ fn inner_body_private(opt: Option) { } }); } + +/// This is okay because unreachable +pub fn unreachable() { + unreachable!("This function panics") +}