From bf1ca2e4b01b9930d29064b1d170a9ead0415fa2 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Sat, 29 Jan 2022 08:40:23 -0300 Subject: [PATCH] Make local_def_id_to_hir_id query directly returh HirId --- compiler/rustc_middle/src/hir/map/mod.rs | 7 +------ compiler/rustc_middle/src/hir/mod.rs | 9 ++++++++- compiler/rustc_middle/src/query/mod.rs | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/compiler/rustc_middle/src/hir/map/mod.rs b/compiler/rustc_middle/src/hir/map/mod.rs index a83f027595d..649cb34bd5f 100644 --- a/compiler/rustc_middle/src/hir/map/mod.rs +++ b/compiler/rustc_middle/src/hir/map/mod.rs @@ -215,12 +215,7 @@ impl<'hir> Map<'hir> { #[inline] pub fn local_def_id_to_hir_id(&self, def_id: LocalDefId) -> HirId { - let owner = self.tcx.local_def_id_to_hir_id(def_id); - match owner { - MaybeOwner::Owner(_) => HirId::make_owner(def_id), - MaybeOwner::Phantom => bug!("No HirId for {:?}", def_id), - MaybeOwner::NonOwner(hir_id) => hir_id, - } + self.tcx.local_def_id_to_hir_id(def_id) } pub fn iter_local_def_id(&self) -> impl Iterator + '_ { diff --git a/compiler/rustc_middle/src/hir/mod.rs b/compiler/rustc_middle/src/hir/mod.rs index 12379eed80e..1053f0cefbe 100644 --- a/compiler/rustc_middle/src/hir/mod.rs +++ b/compiler/rustc_middle/src/hir/mod.rs @@ -69,7 +69,14 @@ pub fn provide(providers: &mut Providers) { let node = owner.node(); Some(Owner { node, hash_without_bodies: owner.nodes.hash_without_bodies }) }; - providers.local_def_id_to_hir_id = |tcx, id| tcx.hir_crate(()).owners[id].map(|_| ()); + providers.local_def_id_to_hir_id = |tcx, id| { + let owner = tcx.hir_crate(()).owners[id].map(|_| ()); + match owner { + MaybeOwner::Owner(_) => HirId::make_owner(id), + MaybeOwner::Phantom => bug!("No HirId for {:?}", id), + MaybeOwner::NonOwner(hir_id) => hir_id, + } + }; 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. diff --git a/compiler/rustc_middle/src/query/mod.rs b/compiler/rustc_middle/src/query/mod.rs index 334e06aa685..c01e7177760 100644 --- a/compiler/rustc_middle/src/query/mod.rs +++ b/compiler/rustc_middle/src/query/mod.rs @@ -60,7 +60,7 @@ rustc_queries! { /// /// This can be conveniently accessed by methods on `tcx.hir()`. /// Avoid calling this query directly. - query local_def_id_to_hir_id(key: LocalDefId) -> hir::MaybeOwner<()> { + query local_def_id_to_hir_id(key: LocalDefId) -> hir::HirId { desc { |tcx| "HIR ID of `{}`", tcx.def_path_str(key.to_def_id()) } }