let externs = options.externs.clone();
let render_options = options.render_options.clone();
let scrape_examples_options = options.scrape_examples_options.clone();
+ let document_private = options.render_options.document_private;
let config = core::create_config(options);
interface::create_compiler_and_run(config, |compiler| {
let (resolver, resolver_caches) = {
let (krate, resolver, _) = &*abort_on_err(queries.expansion(), sess).peek();
let resolver_caches = resolver.borrow_mut().access(|resolver| {
- collect_intra_doc_links::early_resolve_intra_doc_links(resolver, krate, externs)
+ collect_intra_doc_links::early_resolve_intra_doc_links(
+ resolver,
+ krate,
+ externs,
+ document_private,
+ )
});
(resolver.clone(), resolver_caches)
};
resolver: &mut Resolver<'_>,
krate: &ast::Crate,
externs: Externs,
+ document_private_items: bool,
) -> ResolverCaches {
let mut loader = IntraLinkCrateLoader {
resolver,
traits_in_scope: Default::default(),
all_traits: Default::default(),
all_trait_impls: Default::default(),
+ document_private_items,
};
// Overridden `visit_item` below doesn't apply to the crate root,
traits_in_scope: DefIdMap<Vec<TraitCandidate>>,
all_traits: Vec<DefId>,
all_trait_impls: Vec<DefId>,
+ document_private_items: bool,
}
impl IntraLinkCrateLoader<'_, '_> {
}
for child in self.resolver.module_children_or_reexports(module_id) {
- if child.vis == Visibility::Public {
+ if child.vis == Visibility::Public || self.document_private_items {
if let Some(def_id) = child.res.opt_def_id() {
self.add_traits_in_parent_scope(def_id);
}
--- /dev/null
+// compile-flags: --document-private-items
+
+// This ensures that no ICE is triggered when rustdoc is run on this code.
+
+mod stdlib {
+ pub (crate) use std::i8;
+}