diff --git a/src/librustdoc/passes/collect_intra_doc_links.rs b/src/librustdoc/passes/collect_intra_doc_links.rs index f1d1bf439f171..86f94af0c6e31 100644 --- a/src/librustdoc/passes/collect_intra_doc_links.rs +++ b/src/librustdoc/passes/collect_intra_doc_links.rs @@ -796,6 +796,7 @@ impl<'a, 'tcx> DocFolder for LinkCollector<'a, 'tcx> { let hir_id = self.cx.tcx.hir().as_local_hir_id(local); if !self.cx.tcx.privacy_access_levels(LOCAL_CRATE).is_exported(hir_id) + && (item.visibility == Visibility::Public) && !self.cx.render_options.document_private { let item_name = item.name.as_deref().unwrap_or(""); diff --git a/src/test/rustdoc/issue-74134-1.rs b/src/test/rustdoc/issue-74134-1.rs new file mode 100644 index 0000000000000..72d38638a794c --- /dev/null +++ b/src/test/rustdoc/issue-74134-1.rs @@ -0,0 +1,10 @@ +#![deny(intra_doc_link_resolution_failure)] + +// Linking from a private item to a private type is fine without --document-private-items. + +struct Private; + +pub struct Public { + /// [`Private`] + private: Private, +} diff --git a/src/test/rustdoc/issue-74134-2.rs b/src/test/rustdoc/issue-74134-2.rs new file mode 100644 index 0000000000000..f665e360b4982 --- /dev/null +++ b/src/test/rustdoc/issue-74134-2.rs @@ -0,0 +1,11 @@ +// compile-flags: --document-private-items +#![deny(intra_doc_link_resolution_failure)] + +// Linking from a private item to a private type is fine with --document-private-items. + +struct Private; + +pub struct Public { + /// [`Private`] + private: Private, +} diff --git a/src/test/rustdoc/issue-74134-3.rs b/src/test/rustdoc/issue-74134-3.rs new file mode 100644 index 0000000000000..b2709ecdaddda --- /dev/null +++ b/src/test/rustdoc/issue-74134-3.rs @@ -0,0 +1,11 @@ +// should-fail +#![deny(intra_doc_link_resolution_failure)] + +// Linking from a public item to a private type fails without --document-private-items. + +struct Private; + +pub struct Public { + /// [`Private`] + pub public: u32, +} diff --git a/src/test/rustdoc/issue-74134-4.rs b/src/test/rustdoc/issue-74134-4.rs new file mode 100644 index 0000000000000..efff74f279721 --- /dev/null +++ b/src/test/rustdoc/issue-74134-4.rs @@ -0,0 +1,11 @@ +// compile-flags: --document-private-items +#![deny(intra_doc_link_resolution_failure)] + +// Linking from a public item to a private type is fine with --document-private-items. + +struct Private; + +pub struct Public { + /// [`Private`] + pub public: u32, +}