Skip to content

Commit

Permalink
Auto merge of rust-lang#7849 - ThibsG:SafetyDoc, r=llogiq
Browse files Browse the repository at this point in the history
FIx FP in `missing_safety_doc` lint

Fix FP where lint souldn't fire if any parent has `#[doc(hidden)]` attribute

fixes: rust-lang#7347

changelog: [`missing_safety_doc`] Fix FP if any parent has `#[doc(hidden)]` attribute
  • Loading branch information
bors committed Oct 20, 2021
2 parents 76150a4 + 3630afb commit f11905a
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
12 changes: 12 additions & 0 deletions clippy_lints/src/doc.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use clippy_utils::attrs::is_doc_hidden;
use clippy_utils::diagnostics::{span_lint, span_lint_and_help, span_lint_and_note};
use clippy_utils::source::first_line_of_span;
use clippy_utils::ty::{implements_trait, is_type_diagnostic_item};
Expand Down Expand Up @@ -297,6 +298,17 @@ fn lint_for_missing_headers<'tcx>(
if !cx.access_levels.is_exported(def_id) {
return; // Private functions do not require doc comments
}

// do not lint if any parent has `#[doc(hidden)]` attribute (#7347)
if cx
.tcx
.hir()
.parent_iter(cx.tcx.hir().local_def_id_to_hir_id(def_id))
.any(|(id, _node)| is_doc_hidden(cx.tcx.hir().attrs(id)))
{
return;
}

if !headers.safety && sig.header.unsafety == hir::Unsafety::Unsafe {
span_lint(
cx,
Expand Down
10 changes: 10 additions & 0 deletions tests/ui/doc_unsafe.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,13 @@ fn main() {
drive();
}
}

// do not lint if any parent has `#[doc(hidden)]` attribute
// see #7347
#[doc(hidden)]
pub mod __macro {
pub struct T;
impl T {
pub unsafe fn f() {}
}
}

0 comments on commit f11905a

Please sign in to comment.