about summary refs log tree commit diff
diff options
context:
space:
mode:
authormarmeladema <xademax@gmail.com>2020-05-21 00:08:49 +0100
committermarmeladema <xademax@gmail.com>2020-05-21 17:07:48 +0100
commit8ff6ffd88897c29a494b1dcabd5bd98b9cde0a39 (patch)
tree6dd04f7dec79d3c1c2a551dcc1b92116d36802be
parent21f65ae9db20c2019e9e4989754894d9ee7680ce (diff)
downloadrust-8ff6ffd88897c29a494b1dcabd5bd98b9cde0a39.tar.gz
rust-8ff6ffd88897c29a494b1dcabd5bd98b9cde0a39.zip
Use `DefId` in `ResolverOutputs::extern_crate_map` instead of `NodeId`
-rw-r--r--src/librustc_middle/ty/context.rs8
-rw-r--r--src/librustc_middle/ty/mod.rs3
-rw-r--r--src/librustc_resolve/lib.rs17
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() {