about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_middle/ty/context.rs4
-rw-r--r--src/librustc_middle/ty/mod.rs2
-rw-r--r--src/librustc_resolve/lib.rs20
3 files changed, 18 insertions, 8 deletions
diff --git a/src/librustc_middle/ty/context.rs b/src/librustc_middle/ty/context.rs
index a09d1c16986..8b96b0eaab3 100644
--- a/src/librustc_middle/ty/context.rs
+++ b/src/librustc_middle/ty/context.rs
@@ -1115,10 +1115,6 @@ impl<'tcx> TyCtxt<'tcx> {
         let mut trait_map: FxHashMap<_, FxHashMap<_, _>> = FxHashMap::default();
         for (hir_id, v) in resolutions.trait_map.into_iter() {
             let map = trait_map.entry(hir_id.owner).or_default();
-            let v = v
-                .into_iter()
-                .map(|tc| tc.map_import_ids(|id| definitions.node_id_to_hir_id(id)))
-                .collect();
             map.insert(hir_id.local_id, StableVec::new(v));
         }
 
diff --git a/src/librustc_middle/ty/mod.rs b/src/librustc_middle/ty/mod.rs
index 4b9f77b4b4b..46715b8e737 100644
--- a/src/librustc_middle/ty/mod.rs
+++ b/src/librustc_middle/ty/mod.rs
@@ -121,7 +121,7 @@ pub struct ResolverOutputs {
     pub definitions: rustc_hir::definitions::Definitions,
     pub cstore: Box<CrateStoreDyn>,
     pub extern_crate_map: NodeMap<CrateNum>,
-    pub trait_map: FxHashMap<hir::HirId, Vec<hir::TraitCandidate<NodeId>>>,
+    pub trait_map: FxHashMap<hir::HirId, Vec<hir::TraitCandidate<hir::HirId>>>,
     pub maybe_unused_trait_imports: NodeSet,
     pub maybe_unused_extern_crates: Vec<(NodeId, Span)>,
     pub export_map: ExportMap<NodeId>,
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs
index 625ca5dec50..0b6b1fbdc34 100644
--- a/src/librustc_resolve/lib.rs
+++ b/src/librustc_resolve/lib.rs
@@ -1273,15 +1273,21 @@ impl<'a> Resolver<'a> {
     }
 
     pub fn into_outputs(self) -> ResolverOutputs {
+        let definitions = self.definitions;
         let trait_map = {
             let mut map = FxHashMap::default();
             for (k, v) in self.trait_map.into_iter() {
-                map.insert(self.definitions.node_id_to_hir_id(k), v);
+                map.insert(
+                    definitions.node_id_to_hir_id(k),
+                    v.into_iter()
+                        .map(|tc| tc.map_import_ids(|id| definitions.node_id_to_hir_id(id)))
+                        .collect(),
+                );
             }
             map
         };
         ResolverOutputs {
-            definitions: self.definitions,
+            definitions: definitions,
             cstore: Box::new(self.crate_loader.into_cstore()),
             extern_crate_map: self.extern_crate_map,
             export_map: self.export_map,
@@ -1306,7 +1312,15 @@ impl<'a> Resolver<'a> {
             trait_map: {
                 let mut map = FxHashMap::default();
                 for (k, v) in self.trait_map.iter() {
-                    map.insert(self.definitions.node_id_to_hir_id(k.clone()), v.clone());
+                    map.insert(
+                        self.definitions.node_id_to_hir_id(k.clone()),
+                        v.iter()
+                            .map(|tc| {
+                                tc.clone()
+                                    .map_import_ids(|id| self.definitions.node_id_to_hir_id(id))
+                            })
+                            .collect(),
+                    );
                 }
                 map
             },