diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2021-12-05 13:09:56 +0100 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2022-01-15 21:26:24 +0100 |
| commit | ebcc847369d5b050cdde870b2261e34afed8679f (patch) | |
| tree | 7f928fc2f3604a2d7aba348eaa5fa8743db3b4b4 | |
| parent | 79afe99973f15bb0daee8c8554cd3d8049b602b2 (diff) | |
Make ty_param_owner return a LocalDefId.
| -rw-r--r-- | compiler/rustc_middle/src/hir/map/mod.rs | 8 | ||||
| -rw-r--r-- | compiler/rustc_typeck/src/check/fn_ctxt/mod.rs | 3 | ||||
| -rw-r--r-- | compiler/rustc_typeck/src/collect.rs | 5 |
3 files changed, 8 insertions, 8 deletions
diff --git a/compiler/rustc_middle/src/hir/map/mod.rs b/compiler/rustc_middle/src/hir/map/mod.rs index b346c2bb636..73829151bb1 100644 --- a/compiler/rustc_middle/src/hir/map/mod.rs +++ b/compiler/rustc_middle/src/hir/map/mod.rs @@ -546,10 +546,12 @@ impl<'hir> Map<'hir> { }); } - pub fn ty_param_owner(&self, id: HirId) -> HirId { + pub fn ty_param_owner(&self, id: HirId) -> LocalDefId { match self.get(id) { - Node::Item(&Item { kind: ItemKind::Trait(..) | ItemKind::TraitAlias(..), .. }) => id, - Node::GenericParam(_) => self.get_parent_node(id), + Node::Item(&Item { kind: ItemKind::Trait(..) | ItemKind::TraitAlias(..), .. }) => { + id.expect_owner() + } + Node::GenericParam(_) => self.get_parent_item(id), _ => bug!("ty_param_owner: {} not a type parameter", self.node_to_string(id)), } } diff --git a/compiler/rustc_typeck/src/check/fn_ctxt/mod.rs b/compiler/rustc_typeck/src/check/fn_ctxt/mod.rs index 9c70d2cb365..3a81af03162 100644 --- a/compiler/rustc_typeck/src/check/fn_ctxt/mod.rs +++ b/compiler/rustc_typeck/src/check/fn_ctxt/mod.rs @@ -188,8 +188,7 @@ impl<'a, 'tcx> AstConv<'tcx> for FnCtxt<'a, 'tcx> { ) -> ty::GenericPredicates<'tcx> { let tcx = self.tcx; let hir_id = tcx.hir().local_def_id_to_hir_id(def_id.expect_local()); - let item_id = tcx.hir().ty_param_owner(hir_id); - let item_def_id = tcx.hir().local_def_id(item_id); + let item_def_id = tcx.hir().ty_param_owner(hir_id); let generics = tcx.generics_of(item_def_id); let index = generics.param_def_id_to_index[&def_id]; ty::GenericPredicates { diff --git a/compiler/rustc_typeck/src/collect.rs b/compiler/rustc_typeck/src/collect.rs index 5c1c9c4791c..85d81cce100 100644 --- a/compiler/rustc_typeck/src/collect.rs +++ b/compiler/rustc_typeck/src/collect.rs @@ -569,13 +569,12 @@ fn type_param_predicates( let param_id = tcx.hir().local_def_id_to_hir_id(def_id); let param_owner = tcx.hir().ty_param_owner(param_id); - let param_owner_def_id = tcx.hir().local_def_id(param_owner); - let generics = tcx.generics_of(param_owner_def_id); + let generics = tcx.generics_of(param_owner); let index = generics.param_def_id_to_index[&def_id.to_def_id()]; let ty = tcx.mk_ty_param(index, tcx.hir().ty_param_name(param_id)); // Don't look for bounds where the type parameter isn't in scope. - let parent = if item_def_id == param_owner_def_id.to_def_id() { + let parent = if item_def_id == param_owner.to_def_id() { None } else { tcx.generics_of(item_def_id).parent |
