summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume.gomez@huawei.com>2023-06-01 18:29:18 +0200
committerGuillaume Gomez <guillaume.gomez@huawei.com>2023-06-01 18:29:18 +0200
commit96892a52edc4ae063a1cd2ab5b92be1df2fc65ea (patch)
treeacab3bc7d5f5523b35135efa2c5ba4875aa15991 /src
parentfabf9298633ca64450fa2af535252dc44a3b1080 (diff)
Fix bug where private item with intermediate doc hidden re-export was not inlined
Diffstat (limited to 'src')
-rw-r--r--src/librustdoc/clean/mod.rs3
-rw-r--r--src/librustdoc/visit_ast.rs3
2 files changed, 4 insertions, 2 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs
index 5fd867189fd..60da1d65774 100644
--- a/src/librustdoc/clean/mod.rs
+++ b/src/librustdoc/clean/mod.rs
@@ -2180,7 +2180,8 @@ fn get_all_import_attributes<'hir>(
// This is the "original" reexport so we get all its attributes without filtering them.
attrs = import_attrs.iter().map(|attr| (Cow::Borrowed(attr), Some(def_id))).collect();
first = false;
- } else {
+ // We don't add attributes of an intermediate re-export if it has `#[doc(hidden)]`.
+ } else if !cx.tcx.is_doc_hidden(def_id) {
add_without_unwanted_attributes(&mut attrs, import_attrs, is_inline, Some(def_id));
}
}
diff --git a/src/librustdoc/visit_ast.rs b/src/librustdoc/visit_ast.rs
index abb9229fbd5..1689445b9ef 100644
--- a/src/librustdoc/visit_ast.rs
+++ b/src/librustdoc/visit_ast.rs
@@ -246,7 +246,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
glob: bool,
please_inline: bool,
) -> bool {
- debug!("maybe_inline_local res: {:?}", res);
+ debug!("maybe_inline_local (renamed: {renamed:?}) res: {res:?}");
if renamed == Some(kw::Underscore) {
// We never inline `_` reexports.
@@ -308,6 +308,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
.cache
.effective_visibilities
.is_directly_public(tcx, item_def_id.to_def_id()) &&
+ !tcx.is_doc_hidden(item_def_id) &&
!inherits_doc_hidden(tcx, item_def_id, None)
{
// The imported item is public and not `doc(hidden)` so no need to inline it.