Use DefId
in ResolverOutputs::extern_crate_map
instead of NodeId
This commit is contained in:
parent
21f65ae9db
commit
8ff6ffd888
3 changed files with 18 additions and 10 deletions
|
@ -34,7 +34,6 @@ use crate::ty::{InferConst, ParamConst};
|
|||
use crate::ty::{List, TyKind, TyS};
|
||||
use rustc_ast::ast;
|
||||
use rustc_ast::expand::allocator::AllocatorKind;
|
||||
use rustc_ast::node_id::NodeMap;
|
||||
use rustc_attr as attr;
|
||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||
use rustc_data_structures::profiling::SelfProfilerRef;
|
||||
|
@ -923,7 +922,7 @@ pub struct GlobalCtxt<'tcx> {
|
|||
pub consts: CommonConsts<'tcx>,
|
||||
|
||||
/// Resolutions of `extern crate` items produced by resolver.
|
||||
extern_crate_map: NodeMap<CrateNum>,
|
||||
extern_crate_map: FxHashMap<DefId, CrateNum>,
|
||||
|
||||
/// Map indicating what traits are in scope for places where this
|
||||
/// is relevant; generated by resolve.
|
||||
|
@ -2682,10 +2681,7 @@ pub fn provide(providers: &mut ty::query::Providers<'_>) {
|
|||
let id = tcx.hir().local_def_id_to_hir_id(id.expect_local());
|
||||
tcx.stability().local_deprecation_entry(id)
|
||||
};
|
||||
providers.extern_mod_stmt_cnum = |tcx, id| {
|
||||
let id = tcx.hir().as_local_node_id(id).unwrap();
|
||||
tcx.extern_crate_map.get(&id).cloned()
|
||||
};
|
||||
providers.extern_mod_stmt_cnum = |tcx, id| tcx.extern_crate_map.get(&id).cloned();
|
||||
providers.all_crate_nums = |tcx, cnum| {
|
||||
assert_eq!(cnum, LOCAL_CRATE);
|
||||
tcx.arena.alloc_slice(&tcx.cstore.crates_untracked())
|
||||
|
|
|
@ -17,7 +17,6 @@ use crate::ty;
|
|||
use crate::ty::subst::{InternalSubsts, Subst, SubstsRef};
|
||||
use crate::ty::util::{Discr, IntTypeExt};
|
||||
use rustc_ast::ast;
|
||||
use rustc_ast::node_id::NodeMap;
|
||||
use rustc_attr as attr;
|
||||
use rustc_data_structures::captures::Captures;
|
||||
use rustc_data_structures::fingerprint::Fingerprint;
|
||||
|
@ -121,7 +120,7 @@ mod sty;
|
|||
pub struct ResolverOutputs {
|
||||
pub definitions: rustc_hir::definitions::Definitions,
|
||||
pub cstore: Box<CrateStoreDyn>,
|
||||
pub extern_crate_map: NodeMap<CrateNum>,
|
||||
pub extern_crate_map: FxHashMap<DefId, CrateNum>,
|
||||
pub trait_map: FxHashMap<hir::HirId, Vec<hir::TraitCandidate<hir::HirId>>>,
|
||||
pub maybe_unused_trait_imports: FxHashSet<LocalDefId>,
|
||||
pub maybe_unused_extern_crates: Vec<(DefId, Span)>,
|
||||
|
|
|
@ -1274,6 +1274,13 @@ impl<'a> Resolver<'a> {
|
|||
|
||||
pub fn into_outputs(self) -> ResolverOutputs {
|
||||
let definitions = self.definitions;
|
||||
let extern_crate_map = {
|
||||
let mut map = FxHashMap::default();
|
||||
for (k, v) in self.extern_crate_map.into_iter() {
|
||||
map.insert(definitions.local_def_id(k).to_def_id(), v);
|
||||
}
|
||||
map
|
||||
};
|
||||
let export_map = {
|
||||
let mut map = FxHashMap::default();
|
||||
for (k, v) in self.export_map.into_iter() {
|
||||
|
@ -1316,7 +1323,7 @@ impl<'a> Resolver<'a> {
|
|||
ResolverOutputs {
|
||||
definitions: definitions,
|
||||
cstore: Box::new(self.crate_loader.into_cstore()),
|
||||
extern_crate_map: self.extern_crate_map,
|
||||
extern_crate_map,
|
||||
export_map,
|
||||
trait_map,
|
||||
glob_map,
|
||||
|
@ -1334,7 +1341,13 @@ impl<'a> Resolver<'a> {
|
|||
ResolverOutputs {
|
||||
definitions: self.definitions.clone(),
|
||||
cstore: Box::new(self.cstore().clone()),
|
||||
extern_crate_map: self.extern_crate_map.clone(),
|
||||
extern_crate_map: {
|
||||
let mut map = FxHashMap::default();
|
||||
for (k, v) in self.extern_crate_map.iter() {
|
||||
map.insert(self.definitions.local_def_id(k.clone()).to_def_id(), v.clone());
|
||||
}
|
||||
map
|
||||
},
|
||||
export_map: {
|
||||
let mut map = FxHashMap::default();
|
||||
for (k, v) in self.export_map.iter() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue