@@ -43,7 +43,7 @@ use crate::ty::subst::{UserSubsts, GenericArgKind};
43
43
use crate :: ty:: { BoundVar , BindingMode } ;
44
44
use crate :: ty:: CanonicalPolyFnSig ;
45
45
use crate :: util:: common:: ErrorReported ;
46
- use crate :: util:: nodemap:: { DefIdMap , DefIdSet , ItemLocalMap , ItemLocalSet } ;
46
+ use crate :: util:: nodemap:: { DefIdMap , DefIdSet , ItemLocalMap , ItemLocalSet , NodeMap } ;
47
47
use crate :: util:: nodemap:: { FxHashMap , FxHashSet } ;
48
48
use crate :: util:: profiling:: SelfProfilerRef ;
49
49
@@ -1051,6 +1051,9 @@ pub struct GlobalCtxt<'tcx> {
1051
1051
/// Common consts, pre-interned for your convenience.
1052
1052
pub consts : CommonConsts < ' tcx > ,
1053
1053
1054
+ /// Resolutions of `extern crate` items produced by resolver.
1055
+ extern_crate_map : NodeMap < CrateNum > ,
1056
+
1054
1057
/// Map indicating what traits are in scope for places where this
1055
1058
/// is relevant; generated by resolve.
1056
1059
trait_map : FxHashMap < DefIndex ,
@@ -1274,6 +1277,7 @@ impl<'tcx> TyCtxt<'tcx> {
1274
1277
types : common_types,
1275
1278
lifetimes : common_lifetimes,
1276
1279
consts : common_consts,
1280
+ extern_crate_map : resolutions. extern_crate_map ,
1277
1281
trait_map,
1278
1282
export_map : resolutions. export_map . into_iter ( ) . map ( |( k, v) | {
1279
1283
let exports: Vec < _ > = v. into_iter ( ) . map ( |e| {
@@ -2951,7 +2955,7 @@ pub fn provide(providers: &mut ty::query::Providers<'_>) {
2951
2955
} ;
2952
2956
providers. extern_mod_stmt_cnum = |tcx, id| {
2953
2957
let id = tcx. hir ( ) . as_local_node_id ( id) . unwrap ( ) ;
2954
- tcx. cstore . extern_mod_stmt_cnum_untracked ( id )
2958
+ tcx. extern_crate_map . get ( & id ) . cloned ( )
2955
2959
} ;
2956
2960
providers. all_crate_nums = |tcx, cnum| {
2957
2961
assert_eq ! ( cnum, LOCAL_CRATE ) ;
0 commit comments