Skip to content

Commit

Permalink
Auto merge of #73365 - Manishearth:rustdoc-vis, r=GuillaumeGomez
Browse files Browse the repository at this point in the history
Record visibility of reexports for all items, not just type items

This fixes #73363

Unfortunately I can't add a test for this since this bug is obscured by the cross-crate bug, being fixed in #73363 . Tests will be added later.

cc @jyn514

r? @GuillaumeGomez
  • Loading branch information
bors committed Jul 17, 2020
2 parents 86c0b85 + 90c678c commit c2dbebd
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 17 deletions.
30 changes: 13 additions & 17 deletions src/librustdoc/visit_ast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down
19 changes: 19 additions & 0 deletions src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs
Original file line number Diff line number Diff line change
@@ -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};

}
10 changes: 10 additions & 0 deletions src/test/rustdoc/intra-doc-crate/hidden.rs
Original file line number Diff line number Diff line change
@@ -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};

0 comments on commit c2dbebd

Please sign in to comment.