Skip to content

Commit

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

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 rust-lang#88741

fixes rust-lang#88741

r? ```@jyn514```
  • Loading branch information
workingjubilee committed Sep 12, 2021
2 parents 3dc37c6 + c86c634 commit c31152d
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 c31152d

Please sign in to comment.