From d5b1b74f479d5d9c38875188395e4cb5c1e6424f Mon Sep 17 00:00:00 2001
From: Manish Goregaokar <manishsmail@gmail.com>
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 <manishsmail@gmail.com>
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 <manishsmail@gmail.com>
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 <joshua@yottadb.com>
---
 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