diff options
| author | marmeladema <xademax@gmail.com> | 2020-05-21 00:08:49 +0100 |
|---|---|---|
| committer | marmeladema <xademax@gmail.com> | 2020-05-21 17:07:48 +0100 |
| commit | 8ff6ffd88897c29a494b1dcabd5bd98b9cde0a39 (patch) | |
| tree | 6dd04f7dec79d3c1c2a551dcc1b92116d36802be | |
| parent | 21f65ae9db20c2019e9e4989754894d9ee7680ce (diff) | |
| download | rust-8ff6ffd88897c29a494b1dcabd5bd98b9cde0a39.tar.gz rust-8ff6ffd88897c29a494b1dcabd5bd98b9cde0a39.zip | |
Use `DefId` in `ResolverOutputs::extern_crate_map` instead of `NodeId`
| -rw-r--r-- | src/librustc_middle/ty/context.rs | 8 | ||||
| -rw-r--r-- | src/librustc_middle/ty/mod.rs | 3 | ||||
| -rw-r--r-- | src/librustc_resolve/lib.rs | 17 |
3 files changed, 18 insertions, 10 deletions
diff --git a/src/librustc_middle/ty/context.rs b/src/librustc_middle/ty/context.rs index ad43f8c25b2..6a46a83a412 100644 --- a/src/librustc_middle/ty/context.rs +++ b/src/librustc_middle/ty/context.rs @@ -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()) diff --git a/src/librustc_middle/ty/mod.rs b/src/librustc_middle/ty/mod.rs index f246d8cf4c0..73b4074bd62 100644 --- a/src/librustc_middle/ty/mod.rs +++ b/src/librustc_middle/ty/mod.rs @@ -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)>, diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 03fc6a6ab4b..d09b5b5d701 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -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() { |
