From d5b1b74f479d5d9c38875188395e4cb5c1e6424f Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Mon, 15 Jun 2020 00:11:38 -0700 Subject: [PATCH 1/3] Record visibility of reexports for all items, not just type items --- src/librustdoc/visit_ast.rs | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/src/librustdoc/visit_ast.rs b/src/librustdoc/visit_ast.rs index c18f417e4f8e1..735446d235c2e 100644 --- a/src/librustdoc/visit_ast.rs +++ b/src/librustdoc/visit_ast.rs @@ -303,26 +303,22 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> { if !res_did.is_local() && !is_no_inline { let attrs = clean::inline::load_attrs(self.cx, res_did); let self_is_hidden = attrs.lists(sym::doc).has_word(sym::hidden); - match res { - Res::Def( - DefKind::Trait - | DefKind::Struct - | DefKind::Union - | DefKind::Enum - | DefKind::ForeignTy - | DefKind::TyAlias, - did, - ) if !self_is_hidden => { - self.cx.renderinfo.get_mut().access_levels.map.insert(did, AccessLevel::Public); - } - Res::Def(DefKind::Mod, did) => { - if !self_is_hidden { - crate::visit_lib::LibEmbargoVisitor::new(self.cx).visit_mod(did); + if !self_is_hidden { + if let Res::Def(kind, did) = res { + if kind == DefKind::Mod { + crate::visit_lib::LibEmbargoVisitor::new(self.cx).visit_mod(did) + } else { + // All items need to be handled here in case someone wishes to link + // to them with intra-doc links + self.cx + .renderinfo + .get_mut() + .access_levels + .map + .insert(did, AccessLevel::Public); } } - _ => {} } - return false; } From 50d350b67cf3ef2acf52bee179c2eccfbf5e27e1 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Tue, 16 Jun 2020 13:55:13 -0700 Subject: [PATCH 2/3] Add test for doc(hidden) intra-doc cross-crate reexports --- .../intra-doc-crate/auxiliary/hidden.rs | 19 +++++++++++++++++++ src/test/rustdoc/intra-doc-crate/hidden.rs | 10 ++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs create mode 100644 src/test/rustdoc/intra-doc-crate/hidden.rs diff --git a/src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs b/src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs new file mode 100644 index 0000000000000..04be83ceb01e9 --- /dev/null +++ b/src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs @@ -0,0 +1,19 @@ +#![crate_name = "hidden_dep"] +#![deny(intra_doc_resolution_failure)] + +#[doc(hidden)] +pub mod __reexport { + pub use crate::*; +} + +pub mod future { + mod ready { + + /// Link to [`ready`](function@ready) + pub struct Ready; + pub fn ready() {} + + } + pub use self::ready::{ready, Ready}; + +} diff --git a/src/test/rustdoc/intra-doc-crate/hidden.rs b/src/test/rustdoc/intra-doc-crate/hidden.rs new file mode 100644 index 0000000000000..5fcf4fd710155 --- /dev/null +++ b/src/test/rustdoc/intra-doc-crate/hidden.rs @@ -0,0 +1,10 @@ +// aux-build:hidden.rs +// build-aux-docs +#![deny(intra_doc_resolution_failure)] + +// tests https://github.com/rust-lang/rust/issues/73363 + +extern crate hidden_dep; + +// @has 'hidden/struct.Ready.html' '//a/@href' '../hidden/fn.ready.html' +pub use hidden_dep::future::{ready, Ready}; From 90c678cb037c612e1ff4427f3649eb64e62bb671 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Thu, 16 Jul 2020 22:09:17 -0700 Subject: [PATCH 3/3] Update src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs Co-authored-by: Joshua Nelson --- src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs | 2 +- src/test/rustdoc/intra-doc-crate/hidden.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs b/src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs index 04be83ceb01e9..23e38523a4f91 100644 --- a/src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs +++ b/src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs @@ -1,5 +1,5 @@ #![crate_name = "hidden_dep"] -#![deny(intra_doc_resolution_failure)] +#![deny(intra_doc_link_resolution_failure)] #[doc(hidden)] pub mod __reexport { diff --git a/src/test/rustdoc/intra-doc-crate/hidden.rs b/src/test/rustdoc/intra-doc-crate/hidden.rs index 5fcf4fd710155..e3d2af16db19c 100644 --- a/src/test/rustdoc/intra-doc-crate/hidden.rs +++ b/src/test/rustdoc/intra-doc-crate/hidden.rs @@ -1,6 +1,6 @@ // aux-build:hidden.rs // build-aux-docs -#![deny(intra_doc_resolution_failure)] +#![deny(intra_doc_link_resolution_failure)] // tests https://github.com/rust-lang/rust/issues/73363