rustdoc: Introduce a resolver cache for sharing data between early doc link resolution and later passes
This commit is contained in:
parent
e012a191d7
commit
5acd1f91a0
10 changed files with 297 additions and 266 deletions
|
@ -10,6 +10,7 @@ use rustc_hir::definitions::{DefKey, DefPath, DefPathHash};
|
|||
use rustc_middle::hir::exports::Export;
|
||||
use rustc_middle::middle::exported_symbols::ExportedSymbol;
|
||||
use rustc_middle::middle::stability::DeprecationEntry;
|
||||
use rustc_middle::ty::fast_reject::SimplifiedType;
|
||||
use rustc_middle::ty::query::{ExternProviders, Providers};
|
||||
use rustc_middle::ty::{self, TyCtxt, Visibility};
|
||||
use rustc_session::cstore::{CrateSource, CrateStore, ForeignModule};
|
||||
|
@ -192,8 +193,6 @@ provide! { <'tcx> tcx, def_id, other, cdata,
|
|||
extra_filename => { cdata.root.extra_filename.clone() }
|
||||
|
||||
traits_in_crate => { tcx.arena.alloc_from_iter(cdata.get_traits()) }
|
||||
all_trait_implementations => { tcx.arena.alloc_from_iter(cdata.get_trait_impls()) }
|
||||
|
||||
implementations_of_trait => { cdata.get_implementations_of_trait(tcx, other) }
|
||||
|
||||
visibility => { cdata.get_visibility(def_id.index) }
|
||||
|
@ -473,6 +472,17 @@ impl CStore {
|
|||
) -> Span {
|
||||
self.get_crate_data(cnum).get_proc_macro_quoted_span(id, sess)
|
||||
}
|
||||
|
||||
pub fn traits_in_crate_untracked(&self, cnum: CrateNum) -> Vec<DefId> {
|
||||
self.get_crate_data(cnum).get_traits().collect()
|
||||
}
|
||||
|
||||
pub fn trait_impls_in_crate_untracked(
|
||||
&self,
|
||||
cnum: CrateNum,
|
||||
) -> Vec<(DefId, Option<SimplifiedType>)> {
|
||||
self.get_crate_data(cnum).get_trait_impls().collect()
|
||||
}
|
||||
}
|
||||
|
||||
impl CrateStore for CStore {
|
||||
|
|
|
@ -1416,13 +1416,6 @@ rustc_queries! {
|
|||
separate_provide_extern
|
||||
}
|
||||
|
||||
/// Given a crate, look up all trait impls in that crate.
|
||||
/// Return `(impl_id, self_ty)`.
|
||||
query all_trait_implementations(_: CrateNum) -> &'tcx [(DefId, Option<SimplifiedType>)] {
|
||||
desc { "looking up all (?) trait implementations" }
|
||||
separate_provide_extern
|
||||
}
|
||||
|
||||
query is_dllimport_foreign_item(def_id: DefId) -> bool {
|
||||
desc { |tcx| "is_dllimport_foreign_item({})", tcx.def_path_str(def_id) }
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue