]> git.lizzy.rs Git - rust.git/commitdiff
Replace type_param_to_index with param_def_id_to_index
authorvarkor <github@varkor.com>
Wed, 18 Apr 2018 11:45:13 +0000 (12:45 +0100)
committervarkor <github@varkor.com>
Tue, 15 May 2018 13:21:31 +0000 (14:21 +0100)
src/librustc/ich/impls_ty.rs
src/librustc/ty/mod.rs
src/librustc_typeck/astconv.rs
src/librustc_typeck/check/mod.rs
src/librustc_typeck/collect.rs

index d0427ef4be227eaf7c18cc64facecd78a2f3737f..fc0a9ac9d18f3eaae599c198c96701cdc15d3d72 100644 (file)
@@ -740,7 +740,7 @@ fn hash_stable<W: StableHasherResult>(&self,
 
             // Reverse map to each `TypeParamDef`'s `index` field, from
             // `def_id.index` (`def_id.krate` is the same as the item's).
-            type_param_to_index: _, // Don't hash this
+            param_def_id_to_index: _, // Don't hash this
             has_self,
             has_late_bound_regions,
         } = *self;
index 0cbee56487ff24b9fe4a996688bd91590143ab5d..35a44bcf40309049a187ec0554451f5ae0a11154 100644 (file)
@@ -796,7 +796,7 @@ pub struct Generics {
     pub params: Vec<GenericParamDef>,
 
     /// Reverse map to each `TypeParamDef`'s `index` field
-    pub type_param_to_index: FxHashMap<DefId, u32>,
+    pub param_def_id_to_index: FxHashMap<DefId, u32>,
 
     pub has_self: bool,
     pub has_late_bound_regions: Option<Span>,
index 11003a49316ea7f7648ca58d71bff5981dae007a..2c9995b25a1bdd9403eb269057c3873d6fbe53cb 100644 (file)
@@ -985,7 +985,7 @@ pub fn def_to_ty(&self,
                 let item_id = tcx.hir.get_parent_node(node_id);
                 let item_def_id = tcx.hir.local_def_id(item_id);
                 let generics = tcx.generics_of(item_def_id);
-                let index = generics.type_param_to_index[&tcx.hir.local_def_id(node_id)];
+                let index = generics.param_def_id_to_index[&tcx.hir.local_def_id(node_id)];
                 tcx.mk_param(index, tcx.hir.name(node_id).as_interned_str())
             }
             Def::SelfTy(_, Some(def_id)) => {
index 3df584040ad315bb083182558f0b4daf5df018ce..0726650b05480ee1827554ba695f8f8bc1539984 100644 (file)
@@ -1716,7 +1716,7 @@ fn get_type_parameter_bounds(&self, _: Span, def_id: DefId)
         let item_id = tcx.hir.ty_param_owner(node_id);
         let item_def_id = tcx.hir.local_def_id(item_id);
         let generics = tcx.generics_of(item_def_id);
-        let index = generics.type_param_to_index[&def_id];
+        let index = generics.param_def_id_to_index[&def_id];
         ty::GenericPredicates {
             parent: None,
             predicates: self.param_env.caller_bounds.iter().filter(|predicate| {
index 1a8d4392f645e54a5f17d8997c38f36b4d682bd2..452b76e1b702f7c769a8da8cfdd2391c4d0e140d 100644 (file)
@@ -243,7 +243,7 @@ fn type_param_predicates<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
     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 index = generics.type_param_to_index[&def_id];
+    let index = generics.param_def_id_to_index[&def_id];
     let ty = tcx.mk_param(index, tcx.hir.ty_param_name(param_id).as_interned_str());
 
     // Don't look for bounds where the type parameter isn't in scope.
@@ -966,23 +966,28 @@ fn generics_of<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
         });
     }
 
-    let type_param_to_index = opt_self.iter()
-                                      .chain(types.iter())
-                                      .map(|ty| (ty.def_id, ty.index))
-                                      .collect();
-
     let opt_self = opt_self.into_iter().map(|ty| ty::GenericParamDef::Type(ty));
     let lifetimes = regions.into_iter().map(|lt| ty::GenericParamDef::Lifetime(lt));
     let types = types.into_iter().map(|ty| ty::GenericParamDef::Type(ty));
-    let params = opt_self.chain(lifetimes)
-                         .chain(types)
-                         .collect();
+    let params: Vec<_> = opt_self.chain(lifetimes)
+                                 .chain(types)
+                                 .collect();
+
+    let param_def_id_to_index =
+        params.iter()
+              .map(|param| {
+                  match param {
+                      ty::GenericParamDef::Lifetime(lt) => (lt.def_id, lt.index),
+                      ty::GenericParamDef::Type(ty) => (ty.def_id, ty.index),
+                  }
+              })
+              .collect();
 
     tcx.alloc_generics(ty::Generics {
         parent: parent_def_id,
         parent_count,
         params,
-        type_param_to_index,
+        param_def_id_to_index,
         has_self: has_self || parent_has_self,
         has_late_bound_regions: has_late_bound_regions(tcx, node),
     })