diff options
| author | bors <bors@rust-lang.org> | 2020-07-17 07:22:32 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2020-07-17 07:22:32 +0000 |
| commit | c2dbebd3d4ad21e80ef4e7535dd1e868aaad7e50 (patch) | |
| tree | 44aa8336d181f7ead3cea1005758c162bcb89267 | |
| parent | 86c0b85da98a3c69e0fc9014e36e1c88bd3ae8d7 (diff) | |
| parent | 90c678cb037c612e1ff4427f3649eb64e62bb671 (diff) | |
| download | rust-c2dbebd3d4ad21e80ef4e7535dd1e868aaad7e50.tar.gz rust-c2dbebd3d4ad21e80ef4e7535dd1e868aaad7e50.zip | |
Auto merge of #73365 - Manishearth:rustdoc-vis, r=GuillaumeGomez
Record visibility of reexports for all items, not just type items This fixes https://github.com/rust-lang/rust/issues/73363 Unfortunately I can't add a test for this since this bug is obscured by the cross-crate bug, being fixed in https://github.com/rust-lang/rust/issues/73363 . Tests will be added later. cc @jyn514 r? @GuillaumeGomez
| -rw-r--r-- | src/librustdoc/visit_ast.rs | 30 | ||||
| -rw-r--r-- | src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs | 19 | ||||
| -rw-r--r-- | src/test/rustdoc/intra-doc-crate/hidden.rs | 10 |
3 files changed, 42 insertions, 17 deletions
diff --git a/src/librustdoc/visit_ast.rs b/src/librustdoc/visit_ast.rs index c18f417e4f8..735446d235c 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; } 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 00000000000..23e38523a4f --- /dev/null +++ b/src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs @@ -0,0 +1,19 @@ +#![crate_name = "hidden_dep"] +#![deny(intra_doc_link_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 00000000000..e3d2af16db1 --- /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_link_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}; |
