mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-29 08:54:50 +00:00
Fix ICE in rustdoc intra doc links when trying to get traits in scope for a private module
This commit is contained in:
parent
2ed6786404
commit
bf2c3b0455
@ -771,6 +771,7 @@ fn main_options(options: config::Options) -> MainResult {
|
||||
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| {
|
||||
@ -791,7 +792,12 @@ fn main_options(options: config::Options) -> MainResult {
|
||||
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)
|
||||
};
|
||||
|
@ -22,6 +22,7 @@ crate fn early_resolve_intra_doc_links(
|
||||
resolver: &mut Resolver<'_>,
|
||||
krate: &ast::Crate,
|
||||
externs: Externs,
|
||||
document_private_items: bool,
|
||||
) -> ResolverCaches {
|
||||
let mut loader = IntraLinkCrateLoader {
|
||||
resolver,
|
||||
@ -30,6 +31,7 @@ crate fn early_resolve_intra_doc_links(
|
||||
traits_in_scope: Default::default(),
|
||||
all_traits: Default::default(),
|
||||
all_trait_impls: Default::default(),
|
||||
document_private_items,
|
||||
};
|
||||
|
||||
// Because of the `crate::` prefix, any doc comment can reference
|
||||
@ -66,6 +68,7 @@ struct IntraLinkCrateLoader<'r, 'ra> {
|
||||
traits_in_scope: DefIdMap<Vec<TraitCandidate>>,
|
||||
all_traits: Vec<DefId>,
|
||||
all_trait_impls: Vec<DefId>,
|
||||
document_private_items: bool,
|
||||
}
|
||||
|
||||
impl IntraLinkCrateLoader<'_, '_> {
|
||||
@ -175,7 +178,7 @@ 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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user