Resolve documentation links in rustc and store the results in metadata
This commit implements MCP https://github.com/rust-lang/compiler-team/issues/584 It also removes code that is no longer used, and that includes code cloning resolver, so issue #83761 is fixed.
This commit is contained in:
parent
a12d31d5a6
commit
b62b82aef4
28 changed files with 653 additions and 853 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