]> git.lizzy.rs Git - rust.git/commitdiff
Make ty_param_owner return a LocalDefId.
authorCamille GILLOT <gillot.camille@gmail.com>
Sun, 5 Dec 2021 12:09:56 +0000 (13:09 +0100)
committerCamille GILLOT <gillot.camille@gmail.com>
Sat, 15 Jan 2022 20:26:24 +0000 (21:26 +0100)
compiler/rustc_middle/src/hir/map/mod.rs
compiler/rustc_typeck/src/check/fn_ctxt/mod.rs
compiler/rustc_typeck/src/collect.rs

index b346c2bb6364f84545f27b285e80a093cf5ddb75..73829151bb1a9181f57a93160246b36230ffa4b7 100644 (file)
@@ -546,10 +546,12 @@ pub fn par_body_owners<F: Fn(LocalDefId) + Sync + Send>(self, f: F) {
         });
     }
 
-    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)),
         }
     }
index 9c70d2cb365b2714ff563cca9402aa7ff2c7b44d..3a81af03162862f8c8d99024fd92681fd8cb7acb 100644 (file)
@@ -188,8 +188,7 @@ fn get_type_parameter_bounds(
     ) -> 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 {
index 5c1c9c4791cc20322ac84be355cac0d6372dde13..85d81cce100f8f08d5d8d3877e734c4c5b6eea45 100644 (file)
@@ -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