diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2021-07-14 00:48:51 +0200 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2022-06-14 22:44:27 +0200 |
| commit | 47799de35a118ffc5a24a414fd003428f850fae4 (patch) | |
| tree | 883c1c324b6e4d421cd8e678c656fa06c8c6b641 /compiler/rustc_middle/src/hir | |
| parent | 1f34da9ec8a85b6f86c5fa1c121ab6f88f2f4966 (diff) | |
| download | rust-47799de35a118ffc5a24a414fd003428f850fae4.tar.gz rust-47799de35a118ffc5a24a414fd003428f850fae4.zip | |
Separate Definitions and CrateStore from ResolverOutputs.
Diffstat (limited to 'compiler/rustc_middle/src/hir')
| -rw-r--r-- | compiler/rustc_middle/src/hir/map/mod.rs | 12 | ||||
| -rw-r--r-- | compiler/rustc_middle/src/hir/mod.rs | 17 |
2 files changed, 13 insertions, 16 deletions
diff --git a/compiler/rustc_middle/src/hir/map/mod.rs b/compiler/rustc_middle/src/hir/map/mod.rs index 0f1597e66e7..73aa23ce2b2 100644 --- a/compiler/rustc_middle/src/hir/map/mod.rs +++ b/compiler/rustc_middle/src/hir/map/mod.rs @@ -170,7 +170,7 @@ impl<'hir> Map<'hir> { pub fn def_key(self, def_id: LocalDefId) -> DefKey { // Accessing the DefKey is ok, since it is part of DefPathHash. - self.tcx.untracked_resolutions.definitions.def_key(def_id) + self.tcx.definitions_untracked().def_key(def_id) } pub fn def_path_from_hir_id(self, id: HirId) -> Option<DefPath> { @@ -179,13 +179,13 @@ impl<'hir> Map<'hir> { pub fn def_path(self, def_id: LocalDefId) -> DefPath { // Accessing the DefPath is ok, since it is part of DefPathHash. - self.tcx.untracked_resolutions.definitions.def_path(def_id) + self.tcx.definitions_untracked().def_path(def_id) } #[inline] pub fn def_path_hash(self, def_id: LocalDefId) -> DefPathHash { // Accessing the DefPathHash is ok, it is incr. comp. stable. - self.tcx.untracked_resolutions.definitions.def_path_hash(def_id) + self.tcx.definitions_untracked().def_path_hash(def_id) } #[inline] @@ -222,7 +222,7 @@ impl<'hir> Map<'hir> { // Create a dependency to the crate to be sure we re-execute this when the amount of // definitions change. self.tcx.ensure().hir_crate(()); - self.tcx.untracked_resolutions.definitions.iter_local_def_id() + self.tcx.definitions_untracked().iter_local_def_id() } pub fn opt_def_kind(self, local_def_id: LocalDefId) -> Option<DefKind> { @@ -1100,7 +1100,7 @@ pub(super) fn crate_hash(tcx: TyCtxt<'_>, crate_num: CrateNum) -> Svh { upstream_crates.hash_stable(&mut hcx, &mut stable_hasher); source_file_names.hash_stable(&mut hcx, &mut stable_hasher); if tcx.sess.opts.debugging_opts.incremental_relative_spans { - let definitions = &tcx.untracked_resolutions.definitions; + let definitions = &tcx.definitions_untracked(); let mut owner_spans: Vec<_> = krate .owners .iter_enumerated() @@ -1131,7 +1131,7 @@ fn upstream_crates(tcx: TyCtxt<'_>) -> Vec<(StableCrateId, Svh)> { .crates(()) .iter() .map(|&cnum| { - let stable_crate_id = tcx.resolutions(()).cstore.stable_crate_id(cnum); + let stable_crate_id = tcx.stable_crate_id(cnum); let hash = tcx.crate_hash(cnum); (stable_crate_id, hash) }) diff --git a/compiler/rustc_middle/src/hir/mod.rs b/compiler/rustc_middle/src/hir/mod.rs index 34ed5788c54..8068e6dff95 100644 --- a/compiler/rustc_middle/src/hir/mod.rs +++ b/compiler/rustc_middle/src/hir/mod.rs @@ -7,7 +7,7 @@ pub mod nested_filter; pub mod place; use crate::ty::query::Providers; -use crate::ty::{ImplSubject, TyCtxt}; +use crate::ty::{DefIdTree, ImplSubject, TyCtxt}; use rustc_data_structures::fingerprint::Fingerprint; use rustc_data_structures::stable_hasher::{HashStable, StableHasher}; use rustc_hir::def_id::{DefId, LocalDefId}; @@ -104,23 +104,20 @@ pub fn provide(providers: &mut Providers) { }; providers.hir_owner_nodes = |tcx, id| tcx.hir_crate(()).owners[id].map(|i| &i.nodes); providers.hir_owner_parent = |tcx, id| { - // Accessing the def_key is ok since its value is hashed as part of `id`'s DefPathHash. - let parent = tcx.untracked_resolutions.definitions.def_key(id).parent; - let parent = parent.map_or(CRATE_HIR_ID, |local_def_index| { - let def_id = LocalDefId { local_def_index }; - let mut parent_hir_id = tcx.hir().local_def_id_to_hir_id(def_id); + // Accessing the local_parent is ok since its value is hashed as part of `id`'s DefPathHash. + tcx.opt_local_parent(id).map_or(CRATE_HIR_ID, |parent| { + let mut parent_hir_id = tcx.hir().local_def_id_to_hir_id(parent); if let Some(local_id) = tcx.hir_crate(()).owners[parent_hir_id.owner].unwrap().parenting.get(&id) { parent_hir_id.local_id = *local_id; } parent_hir_id - }); - parent + }) }; providers.hir_attrs = |tcx, id| tcx.hir_crate(()).owners[id].as_owner().map_or(AttributeMap::EMPTY, |o| &o.attrs); - providers.source_span = |tcx, def_id| tcx.resolutions(()).definitions.def_span(def_id); + providers.source_span = |tcx, def_id| tcx.definitions_untracked().def_span(def_id); providers.def_span = |tcx, def_id| { let def_id = def_id.expect_local(); let hir_id = tcx.hir().local_def_id_to_hir_id(def_id); @@ -150,7 +147,7 @@ pub fn provide(providers: &mut Providers) { providers.all_local_trait_impls = |tcx, ()| &tcx.resolutions(()).trait_impls; providers.expn_that_defined = |tcx, id| { let id = id.expect_local(); - tcx.resolutions(()).definitions.expansion_that_defined(id) + tcx.definitions_untracked().expansion_that_defined(id) }; providers.in_scope_traits_map = |tcx, id| tcx.hir_crate(()).owners[id].as_owner().map(|owner_info| &owner_info.trait_map); |
