From 3c5dba7c6214b2a27d4d976419ab3036ec7ae473 Mon Sep 17 00:00:00 2001 From: marmeladema Date: Wed, 20 May 2020 21:52:30 +0100 Subject: [PATCH] Use `HirId` in value of `ResolverOutputs::trait_map` instead of `NodeId` --- src/librustc_middle/ty/context.rs | 4 ---- src/librustc_middle/ty/mod.rs | 2 +- src/librustc_resolve/lib.rs | 20 +++++++++++++++++--- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/librustc_middle/ty/context.rs b/src/librustc_middle/ty/context.rs index a09d1c16986b..8b96b0eaab3c 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 4b9f77b4b4b5..46715b8e737a 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, pub extern_crate_map: NodeMap, - pub trait_map: FxHashMap>>, + pub trait_map: FxHashMap>>, pub maybe_unused_trait_imports: NodeSet, pub maybe_unused_extern_crates: Vec<(NodeId, Span)>, pub export_map: ExportMap, diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 625ca5dec508..0b6b1fbdc34a 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 },