about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_middle/ty/context.rs12
-rw-r--r--src/librustc_middle/ty/mod.rs2
-rw-r--r--src/librustc_resolve/lib.rs27
3 files changed, 27 insertions, 14 deletions
diff --git a/src/librustc_middle/ty/context.rs b/src/librustc_middle/ty/context.rs
index 8b96b0eaab3..fffc286c8f6 100644
--- a/src/librustc_middle/ty/context.rs
+++ b/src/librustc_middle/ty/context.rs
@@ -1131,17 +1131,7 @@ impl<'tcx> TyCtxt<'tcx> {
             consts: common_consts,
             extern_crate_map: resolutions.extern_crate_map,
             trait_map,
-            export_map: resolutions
-                .export_map
-                .into_iter()
-                .map(|(k, v)| {
-                    let exports: Vec<_> = v
-                        .into_iter()
-                        .map(|e| e.map_id(|id| definitions.node_id_to_hir_id(id)))
-                        .collect();
-                    (k, exports)
-                })
-                .collect(),
+            export_map: resolutions.export_map,
             maybe_unused_trait_imports: resolutions
                 .maybe_unused_trait_imports
                 .into_iter()
diff --git a/src/librustc_middle/ty/mod.rs b/src/librustc_middle/ty/mod.rs
index 46715b8e737..820aa457d7c 100644
--- a/src/librustc_middle/ty/mod.rs
+++ b/src/librustc_middle/ty/mod.rs
@@ -124,7 +124,7 @@ pub struct ResolverOutputs {
     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>,
+    pub export_map: ExportMap<hir::HirId>,
     pub glob_map: GlobMap,
     /// Extern prelude entries. The value is `true` if the entry was introduced
     /// via `extern crate` item and not `--extern` option or compiler built-in.
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs
index 0b6b1fbdc34..db9af9a0c4b 100644
--- a/src/librustc_resolve/lib.rs
+++ b/src/librustc_resolve/lib.rs
@@ -1274,6 +1274,18 @@ impl<'a> Resolver<'a> {
 
     pub fn into_outputs(self) -> ResolverOutputs {
         let definitions = self.definitions;
+        let export_map = {
+            let mut map = FxHashMap::default();
+            for (k, v) in self.export_map.into_iter() {
+                map.insert(
+                    k,
+                    v.into_iter()
+                        .map(|e| e.map_id(|id| definitions.node_id_to_hir_id(id)))
+                        .collect(),
+                );
+            }
+            map
+        };
         let trait_map = {
             let mut map = FxHashMap::default();
             for (k, v) in self.trait_map.into_iter() {
@@ -1290,7 +1302,7 @@ impl<'a> Resolver<'a> {
             definitions: definitions,
             cstore: Box::new(self.crate_loader.into_cstore()),
             extern_crate_map: self.extern_crate_map,
-            export_map: self.export_map,
+            export_map,
             trait_map,
             glob_map: self.glob_map,
             maybe_unused_trait_imports: self.maybe_unused_trait_imports,
@@ -1308,7 +1320,18 @@ impl<'a> Resolver<'a> {
             definitions: self.definitions.clone(),
             cstore: Box::new(self.cstore().clone()),
             extern_crate_map: self.extern_crate_map.clone(),
-            export_map: self.export_map.clone(),
+            export_map: {
+                let mut map = FxHashMap::default();
+                for (k, v) in self.export_map.iter() {
+                    map.insert(
+                        k.clone(),
+                        v.iter()
+                            .map(|e| e.clone().map_id(|id| self.definitions.node_id_to_hir_id(id)))
+                            .collect(),
+                    );
+                }
+                map
+            },
             trait_map: {
                 let mut map = FxHashMap::default();
                 for (k, v) in self.trait_map.iter() {