Skip to content

Commit 54c2df5

Browse files
Remove intra doc link items if they are private/hidden and the matching option is not enabled
1 parent 59d4114 commit 54c2df5

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

src/librustdoc/passes/collect_intra_doc_links.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,6 +1216,23 @@ impl LinkCollector<'_, '_> {
12161216
.emit();
12171217
}
12181218

1219+
fn filter_private_hidden_candidates(&self, candidates: &mut Vec<(Res, Option<DefId>)>) {
1220+
candidates.retain(|(candidate, _)| {
1221+
let Res::Def(_, def_id) = candidate else { return true };
1222+
1223+
if !self.cx.render_options.document_private
1224+
&& !self.cx.tcx.visibility(def_id).is_public()
1225+
&& !self.cx.tcx.has_attr(*def_id, sym::rustc_doc_primitive)
1226+
{
1227+
false
1228+
} else if !self.cx.render_options.document_hidden && self.cx.tcx.is_doc_hidden(def_id) {
1229+
false
1230+
} else {
1231+
true
1232+
}
1233+
});
1234+
}
1235+
12191236
fn resolve_with_disambiguator_cached(
12201237
&mut self,
12211238
key: ResolutionInfo,
@@ -1250,6 +1267,8 @@ impl LinkCollector<'_, '_> {
12501267
}
12511268
}
12521269

1270+
self.filter_private_hidden_candidates(&mut candidates);
1271+
12531272
// If there are multiple items with the same "kind" (for example, both "associated types")
12541273
// and after removing duplicated kinds, only one remains, the `ambiguity_error` function
12551274
// won't emit an error. So at this point, we can just take the first candidate as it was

0 commit comments

Comments
 (0)