diff --git a/src/librustc_middle/ty/context.rs b/src/librustc_middle/ty/context.rs index 8b96b0eaab3c..fffc286c8f6f 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 46715b8e737a..820aa457d7c0 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>>, pub maybe_unused_trait_imports: NodeSet, pub maybe_unused_extern_crates: Vec<(NodeId, Span)>, - pub export_map: ExportMap, + pub export_map: ExportMap, 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 0b6b1fbdc34a..db9af9a0c4be 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() {