Use HirId in value of ResolverOutputs::trait_map instead of NodeId

This commit is contained in:
marmeladema 2020-05-20 21:52:30 +01:00
parent 5728c5371d
commit 3c5dba7c62
3 changed files with 18 additions and 8 deletions

View file

@ -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));
}

View file

@ -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>,

View file

@ -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
},