Auto merge of #94857 - petrochenkov:doclink2, r=oli-obk
Resolve documentation links in rustc and store the results in metadata This PR implements MCP https://github.com/rust-lang/compiler-team/issues/584. Doc links are now resolved in rustc and stored into metadata, so rustdoc simply retrieves them through a query (local or extern), Code that is no longer used is removed, and some code that no longer needs to be public is privatized. The removed code includes resolver cloning, so this PR fixes https://github.com/rust-lang/rust/issues/83761.
This commit is contained in:
commit
5b45024487
30 changed files with 764 additions and 873 deletions
|
@ -113,6 +113,7 @@ macro_rules! arena_types {
|
|||
[decode] trait_impl_trait_tys: rustc_data_structures::fx::FxHashMap<rustc_hir::def_id::DefId, rustc_middle::ty::Ty<'tcx>>,
|
||||
[] bit_set_u32: rustc_index::bit_set::BitSet<u32>,
|
||||
[] external_constraints: rustc_middle::traits::solve::ExternalConstraintsData<'tcx>,
|
||||
[decode] doc_link_resolutions: rustc_hir::def::DocLinkResMap,
|
||||
]);
|
||||
)
|
||||
}
|
||||
|
|
|
@ -2156,4 +2156,16 @@ rustc_queries! {
|
|||
desc { |tcx| "deducing parameter attributes for {}", tcx.def_path_str(def_id) }
|
||||
separate_provide_extern
|
||||
}
|
||||
|
||||
query doc_link_resolutions(def_id: DefId) -> &'tcx DocLinkResMap {
|
||||
eval_always
|
||||
desc { "resolutions for documentation links for a module" }
|
||||
separate_provide_extern
|
||||
}
|
||||
|
||||
query doc_link_traits_in_scope(def_id: DefId) -> &'tcx [DefId] {
|
||||
eval_always
|
||||
desc { "traits in scope for documentation links for a module" }
|
||||
separate_provide_extern
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ use rustc_data_structures::intern::Interned;
|
|||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
use rustc_data_structures::tagged_ptr::CopyTaggedPtr;
|
||||
use rustc_hir as hir;
|
||||
use rustc_hir::def::{CtorKind, CtorOf, DefKind, LifetimeRes, Res};
|
||||
use rustc_hir::def::{CtorKind, CtorOf, DefKind, DocLinkResMap, LifetimeRes, Res};
|
||||
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, LocalDefId, LocalDefIdMap};
|
||||
use rustc_hir::Node;
|
||||
use rustc_index::vec::IndexVec;
|
||||
|
@ -181,6 +181,8 @@ pub struct ResolverGlobalCtxt {
|
|||
/// exist under `std`. For example, wrote `str::from_utf8` instead of `std::str::from_utf8`.
|
||||
pub confused_type_with_std_module: FxHashMap<Span, Span>,
|
||||
pub registered_tools: RegisteredTools,
|
||||
pub doc_link_resolutions: FxHashMap<LocalDefId, DocLinkResMap>,
|
||||
pub doc_link_traits_in_scope: FxHashMap<LocalDefId, Vec<DefId>>,
|
||||
}
|
||||
|
||||
/// Resolutions that should only be used for lowering.
|
||||
|
|
|
@ -81,6 +81,8 @@ trivially_parameterized_over_tcx! {
|
|||
rustc_hir::IsAsync,
|
||||
rustc_hir::LangItem,
|
||||
rustc_hir::def::DefKind,
|
||||
rustc_hir::def::DocLinkResMap,
|
||||
rustc_hir::def_id::DefId,
|
||||
rustc_hir::def_id::DefIndex,
|
||||
rustc_hir::definitions::DefKey,
|
||||
rustc_index::bit_set::BitSet<u32>,
|
||||
|
|
|
@ -45,7 +45,7 @@ use rustc_data_structures::sync::Lrc;
|
|||
use rustc_data_structures::unord::UnordSet;
|
||||
use rustc_errors::ErrorGuaranteed;
|
||||
use rustc_hir as hir;
|
||||
use rustc_hir::def::DefKind;
|
||||
use rustc_hir::def::{DefKind, DocLinkResMap};
|
||||
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, DefIdSet, LocalDefId};
|
||||
use rustc_hir::hir_id::OwnerId;
|
||||
use rustc_hir::lang_items::{LangItem, LanguageItems};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue