Skip to content

Commit

Permalink
Rollup merge of #88745 - hnj2:allow-trait-impl-missing-code, r=Guilla…
Browse files Browse the repository at this point in the history
…umeGomez

Allow missing code examples in trait impls.

Excludes Trait implementations from the items that need to have doc code examples when using the `rustdoc::missing_doc_code_examples` lint.

For details see #88741

fixes #88741

r? `@jyn514`
  • Loading branch information
GuillaumeGomez authored Sep 9, 2021
2 parents f31ac61 + c86c634 commit 26a98a7
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/librustdoc/passes/doc_test_lints.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ use crate::core::DocContext;
use crate::fold::DocFolder;
use crate::html::markdown::{find_testable_code, ErrorCodes, Ignore, LangString};
use crate::visit_ast::inherits_doc_hidden;
use rustc_hir as hir;
use rustc_middle::lint::LintLevelSource;
use rustc_session::lint;
use rustc_span::symbol::sym;
Expand Down Expand Up @@ -67,13 +68,32 @@ crate fn should_have_doc_example(cx: &DocContext<'_>, item: &clean::Item) -> boo
| clean::ImportItem(_)
| clean::PrimitiveItem(_)
| clean::KeywordItem(_)
// check for trait impl
| clean::ImplItem(clean::Impl { trait_: Some(_), .. })
)
{
return false;
}

// The `expect_def_id()` should be okay because `local_def_id_to_hir_id`
// would presumably panic if a fake `DefIndex` were passed.
let hir_id = cx.tcx.hir().local_def_id_to_hir_id(item.def_id.expect_def_id().expect_local());

// check if parent is trait impl
if let Some(parent_hir_id) = cx.tcx.hir().find_parent_node(hir_id) {
if let Some(parent_node) = cx.tcx.hir().find(parent_hir_id) {
if matches!(
parent_node,
hir::Node::Item(hir::Item {
kind: hir::ItemKind::Impl(hir::Impl { of_trait: Some(_), .. }),
..
})
) {
return false;
}
}
}

if cx.tcx.hir().attrs(hir_id).lists(sym::doc).has_word(sym::hidden)
|| inherits_doc_hidden(cx.tcx, hir_id)
{
Expand Down
7 changes: 7 additions & 0 deletions src/test/rustdoc-ui/lint-missing-doc-code-example.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,13 @@ pub union Union {
b: f32,
}

// no code example and it's fine!
impl Clone for Struct {
fn clone(&self) -> Self {
Self { field: self.field }
}
}


#[doc(hidden)]
pub mod foo {
Expand Down

0 comments on commit 26a98a7

Please sign in to comment.