rustdoc: Skip doc link resolution for non-exported items
This commit is contained in:
parent
84dd6dfd9d
commit
bec4eab3f9
5 changed files with 45 additions and 11 deletions
|
|
@ -217,13 +217,8 @@ pub(crate) fn create_config(
|
|||
|
||||
let crate_types =
|
||||
if proc_macro_crate { vec![CrateType::ProcMacro] } else { vec![CrateType::Rlib] };
|
||||
let resolve_doc_links = if *document_private {
|
||||
ResolveDocLinks::All
|
||||
} else {
|
||||
// Should be `ResolveDocLinks::Exported` in theory, but for some reason rustdoc
|
||||
// still tries to request resolutions for links on private items.
|
||||
ResolveDocLinks::All
|
||||
};
|
||||
let resolve_doc_links =
|
||||
if *document_private { ResolveDocLinks::All } else { ResolveDocLinks::Exported };
|
||||
let test = scrape_examples_options.map(|opts| opts.scrape_tests).unwrap_or(false);
|
||||
// plays with error output here!
|
||||
let sessopts = config::Options {
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ use rustc_hir::def_id::{DefId, CRATE_DEF_ID};
|
|||
use rustc_hir::Mutability;
|
||||
use rustc_middle::ty::{fast_reject::TreatProjections, Ty, TyCtxt};
|
||||
use rustc_middle::{bug, ty};
|
||||
use rustc_resolve::rustdoc::MalformedGenerics;
|
||||
use rustc_resolve::rustdoc::{prepare_to_doc_link_resolution, strip_generics_from_path};
|
||||
use rustc_resolve::rustdoc::{has_primitive_or_keyword_docs, prepare_to_doc_link_resolution};
|
||||
use rustc_resolve::rustdoc::{strip_generics_from_path, MalformedGenerics};
|
||||
use rustc_session::lint::Lint;
|
||||
use rustc_span::hygiene::MacroKind;
|
||||
use rustc_span::symbol::{sym, Ident, Symbol};
|
||||
|
|
@ -899,6 +899,15 @@ fn preprocessed_markdown_links(s: &str) -> Vec<PreprocessedMarkdownLink> {
|
|||
|
||||
impl LinkCollector<'_, '_> {
|
||||
fn resolve_links(&mut self, item: &Item) {
|
||||
if !self.cx.render_options.document_private
|
||||
&& let Some(def_id) = item.item_id.as_def_id()
|
||||
&& let Some(def_id) = def_id.as_local()
|
||||
&& !self.cx.tcx.effective_visibilities(()).is_exported(def_id)
|
||||
&& !has_primitive_or_keyword_docs(&item.attrs.other_attrs) {
|
||||
// Skip link resolution for non-exported items.
|
||||
return;
|
||||
}
|
||||
|
||||
// We want to resolve in the lexical scope of the documentation.
|
||||
// In the presence of re-exports, this is not the same as the module of the item.
|
||||
// Rather than merging all documentation into one, resolve it one attribute at a time
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue