Skip to content

Commit a3a5ff9

Browse files
committed
move export_map into the tcx
1 parent d558037 commit a3a5ff9

File tree

11 files changed

+26
-46
lines changed

11 files changed

+26
-46
lines changed

src/librustc/middle/cstore.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,8 @@ pub trait CrateStore {
255255
fn used_crates(&self, prefer: LinkagePreference) -> Vec<(CrateNum, LibSource)>;
256256
fn used_crate_source(&self, cnum: CrateNum) -> CrateSource;
257257
fn extern_mod_stmt_cnum(&self, emod_id: ast::NodeId) -> Option<CrateNum>;
258-
fn encode_metadata<'a, 'tcx>(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>,
259-
reexports: &def::ExportMap,
258+
fn encode_metadata<'a, 'tcx>(&self,
259+
tcx: TyCtxt<'a, 'tcx, 'tcx>,
260260
link_meta: &LinkMeta,
261261
reachable: &NodeSet) -> Vec<u8>;
262262
fn metadata_encoding_version(&self) -> &[u8];
@@ -412,10 +412,10 @@ impl CrateStore for DummyCrateStore {
412412
{ vec![] }
413413
fn used_crate_source(&self, cnum: CrateNum) -> CrateSource { bug!("used_crate_source") }
414414
fn extern_mod_stmt_cnum(&self, emod_id: ast::NodeId) -> Option<CrateNum> { None }
415-
fn encode_metadata<'a, 'tcx>(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>,
416-
reexports: &def::ExportMap,
417-
link_meta: &LinkMeta,
418-
reachable: &NodeSet) -> Vec<u8> { vec![] }
415+
fn encode_metadata<'a, 'tcx>(&self,
416+
tcx: TyCtxt<'a, 'tcx, 'tcx>,
417+
link_meta: &LinkMeta,
418+
reachable: &NodeSet) -> Vec<u8> { vec![] }
419419
fn metadata_encoding_version(&self) -> &[u8] { bug!("metadata_encoding_version") }
420420
}
421421

src/librustc/ty/context.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use session::Session;
1515
use lint;
1616
use middle;
1717
use hir::TraitMap;
18-
use hir::def::Def;
18+
use hir::def::{Def, ExportMap};
1919
use hir::def_id::{CrateNum, DefId, LOCAL_CRATE};
2020
use hir::map as hir_map;
2121
use hir::map::DisambiguatedDefPathData;
@@ -416,6 +416,9 @@ pub struct GlobalCtxt<'tcx> {
416416
/// is relevant; generated by resolve.
417417
pub trait_map: TraitMap,
418418

419+
/// Export map produced by name resolution.
420+
pub export_map: ExportMap,
421+
419422
pub named_region_map: resolve_lifetime::NamedRegionMap,
420423

421424
pub region_maps: RegionMaps,
@@ -698,6 +701,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
698701
region_maps: region_maps,
699702
variance_computed: Cell::new(false),
700703
trait_map: resolutions.trait_map,
704+
export_map: resolutions.export_map,
701705
fulfilled_predicates: RefCell::new(fulfilled_predicates),
702706
hir: hir,
703707
maps: maps::Maps::new(dep_graph, providers),

src/librustc/ty/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ mod sty;
110110
/// produced by the driver and fed to trans and later passes.
111111
#[derive(Clone)]
112112
pub struct CrateAnalysis {
113-
pub export_map: ExportMap,
114113
pub access_levels: middle::privacy::AccessLevels,
115114
pub reachable: NodeSet,
116115
pub name: String,
@@ -122,6 +121,7 @@ pub struct Resolutions {
122121
pub freevars: FreevarMap,
123122
pub trait_map: TraitMap,
124123
pub maybe_unused_trait_imports: NodeSet,
124+
pub export_map: ExportMap,
125125
}
126126

127127
#[derive(Clone, Copy, PartialEq, Eq, Debug)]

src/librustc_driver/driver.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -807,18 +807,18 @@ pub fn phase_2_configure_and_expand<F>(sess: &Session,
807807
expanded_crate: krate,
808808
defs: resolver.definitions,
809809
analysis: ty::CrateAnalysis {
810-
export_map: resolver.export_map,
811810
access_levels: AccessLevels::default(),
812811
reachable: NodeSet(),
813812
name: crate_name.to_string(),
814813
glob_map: if resolver.make_glob_map { Some(resolver.glob_map) } else { None },
815814
},
816815
resolutions: Resolutions {
817816
freevars: resolver.freevars,
817+
export_map: resolver.export_map,
818818
trait_map: resolver.trait_map,
819819
maybe_unused_trait_imports: resolver.maybe_unused_trait_imports,
820820
},
821-
hir_forest: hir_forest
821+
hir_forest: hir_forest,
822822
})
823823
}
824824

@@ -932,7 +932,7 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
932932

933933
analysis.access_levels =
934934
time(time_passes, "privacy checking", || {
935-
rustc_privacy::check_crate(tcx, &analysis.export_map)
935+
rustc_privacy::check_crate(tcx)
936936
});
937937

938938
time(time_passes,

src/librustc_metadata/cstore_impl.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -496,12 +496,12 @@ impl CrateStore for cstore::CStore {
496496
self.do_extern_mod_stmt_cnum(emod_id)
497497
}
498498

499-
fn encode_metadata<'a, 'tcx>(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>,
500-
reexports: &def::ExportMap,
499+
fn encode_metadata<'a, 'tcx>(&self,
500+
tcx: TyCtxt<'a, 'tcx, 'tcx>,
501501
link_meta: &LinkMeta,
502502
reachable: &NodeSet) -> Vec<u8>
503503
{
504-
encoder::encode_metadata(tcx, self, reexports, link_meta, reachable)
504+
encoder::encode_metadata(tcx, self, link_meta, reachable)
505505
}
506506

507507
fn metadata_encoding_version(&self) -> &[u8]

src/librustc_metadata/encoder.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ use index::Index;
1313
use schema::*;
1414

1515
use rustc::middle::cstore::{LinkMeta, LinkagePreference, NativeLibrary};
16-
use rustc::hir::def;
1716
use rustc::hir::def_id::{CrateNum, CRATE_DEF_INDEX, DefIndex, DefId};
1817
use rustc::hir::map::definitions::DefPathTable;
1918
use rustc::middle::dependency_format::Linkage;
@@ -48,7 +47,6 @@ use super::index_builder::{FromId, IndexBuilder, Untracked};
4847
pub struct EncodeContext<'a, 'tcx: 'a> {
4948
opaque: opaque::Encoder<'a>,
5049
pub tcx: TyCtxt<'a, 'tcx, 'tcx>,
51-
reexports: &'a def::ExportMap,
5250
link_meta: &'a LinkMeta,
5351
cstore: &'a cstore::CStore,
5452
exported_symbols: &'a NodeSet,
@@ -306,7 +304,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
306304
let def_id = tcx.hir.local_def_id(id);
307305

308306
let data = ModData {
309-
reexports: match self.reexports.get(&id) {
307+
reexports: match tcx.export_map.get(&id) {
310308
Some(exports) if *vis == hir::Public => self.lazy_seq_ref(exports),
311309
_ => LazySeq::empty(),
312310
},
@@ -1423,7 +1421,6 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
14231421

14241422
pub fn encode_metadata<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
14251423
cstore: &cstore::CStore,
1426-
reexports: &def::ExportMap,
14271424
link_meta: &LinkMeta,
14281425
exported_symbols: &NodeSet)
14291426
-> Vec<u8> {
@@ -1437,7 +1434,6 @@ pub fn encode_metadata<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
14371434
let mut ecx = EncodeContext {
14381435
opaque: opaque::Encoder::new(&mut cursor),
14391436
tcx: tcx,
1440-
reexports: reexports,
14411437
link_meta: link_meta,
14421438
cstore: cstore,
14431439
exported_symbols: exported_symbols,

src/librustc_privacy/lib.rs

+3-7
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ extern crate syntax_pos;
2727

2828
use rustc::dep_graph::DepNode;
2929
use rustc::hir::{self, PatKind};
30-
use rustc::hir::def::{self, Def};
30+
use rustc::hir::def::Def;
3131
use rustc::hir::def_id::{CRATE_DEF_INDEX, DefId};
3232
use rustc::hir::intravisit::{self, Visitor, NestedVisitorMap};
3333
use rustc::hir::itemlikevisit::DeepVisitor;
@@ -71,7 +71,6 @@ impl<'a, 'tcx> Visitor<'tcx> for PubRestrictedVisitor<'a, 'tcx> {
7171

7272
struct EmbargoVisitor<'a, 'tcx: 'a> {
7373
tcx: TyCtxt<'a, 'tcx, 'tcx>,
74-
export_map: &'a def::ExportMap,
7574

7675
// Accessibility levels for reachable nodes
7776
access_levels: AccessLevels,
@@ -324,7 +323,7 @@ impl<'a, 'tcx> Visitor<'tcx> for EmbargoVisitor<'a, 'tcx> {
324323
// This code is here instead of in visit_item so that the
325324
// crate module gets processed as well.
326325
if self.prev_level.is_some() {
327-
if let Some(exports) = self.export_map.get(&id) {
326+
if let Some(exports) = self.tcx.export_map.get(&id) {
328327
for export in exports {
329328
if let Some(node_id) = self.tcx.hir.as_local_node_id(export.def.def_id()) {
330329
self.update(node_id, Some(AccessLevel::Exported));
@@ -1204,9 +1203,7 @@ impl<'a, 'tcx> Visitor<'tcx> for PrivateItemsInPublicInterfacesVisitor<'a, 'tcx>
12041203
fn visit_pat(&mut self, _: &'tcx hir::Pat) {}
12051204
}
12061205

1207-
pub fn check_crate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
1208-
export_map: &def::ExportMap)
1209-
-> AccessLevels {
1206+
pub fn check_crate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) -> AccessLevels {
12101207
let _task = tcx.dep_graph.in_task(DepNode::Privacy);
12111208

12121209
let krate = tcx.hir.krate();
@@ -1226,7 +1223,6 @@ pub fn check_crate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
12261223
// items which are reachable from external crates based on visibility.
12271224
let mut visitor = EmbargoVisitor {
12281225
tcx: tcx,
1229-
export_map: export_map,
12301226
access_levels: Default::default(),
12311227
prev_level: Some(AccessLevel::Public),
12321228
changed: false,

src/librustc_trans/base.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,6 @@ fn write_metadata(cx: &SharedCrateContext,
755755

756756
let cstore = &cx.tcx().sess.cstore;
757757
let metadata = cstore.encode_metadata(cx.tcx(),
758-
cx.export_map(),
759758
cx.link_meta(),
760759
exported_symbols);
761760
if kind == MetadataKind::Uncompressed {
@@ -1056,15 +1055,14 @@ pub fn trans_crate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
10561055
// particular items that will be processed.
10571056
let krate = tcx.hir.krate();
10581057

1059-
let ty::CrateAnalysis { export_map, reachable, name, .. } = analysis;
1058+
let ty::CrateAnalysis { reachable, name, .. } = analysis;
10601059
let exported_symbols = find_exported_symbols(tcx, reachable);
10611060

10621061
let check_overflow = tcx.sess.overflow_checks();
10631062

10641063
let link_meta = link::build_link_meta(incremental_hashes_map, &name);
10651064

10661065
let shared_ccx = SharedCrateContext::new(tcx,
1067-
export_map,
10681066
link_meta.clone(),
10691067
exported_symbols,
10701068
check_overflow);

src/librustc_trans/context.rs

-12
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use rustc::dep_graph::{DepGraph, DepGraphSafe, DepNode, DepTrackingMap,
1414
DepTrackingMapConfig, WorkProduct};
1515
use middle::cstore::LinkMeta;
1616
use rustc::hir;
17-
use rustc::hir::def::ExportMap;
1817
use rustc::hir::def_id::DefId;
1918
use rustc::traits;
2019
use debuginfo;
@@ -68,7 +67,6 @@ pub struct SharedCrateContext<'a, 'tcx: 'a> {
6867
metadata_llmod: ModuleRef,
6968
metadata_llcx: ContextRef,
7069

71-
export_map: ExportMap,
7270
exported_symbols: NodeSet,
7371
link_meta: LinkMeta,
7472
tcx: TyCtxt<'a, 'tcx, 'tcx>,
@@ -402,7 +400,6 @@ unsafe fn create_context_and_module(sess: &Session, mod_name: &str) -> (ContextR
402400

403401
impl<'b, 'tcx> SharedCrateContext<'b, 'tcx> {
404402
pub fn new(tcx: TyCtxt<'b, 'tcx, 'tcx>,
405-
export_map: ExportMap,
406403
link_meta: LinkMeta,
407404
exported_symbols: NodeSet,
408405
check_overflow: bool)
@@ -459,7 +456,6 @@ impl<'b, 'tcx> SharedCrateContext<'b, 'tcx> {
459456
SharedCrateContext {
460457
metadata_llmod: metadata_llmod,
461458
metadata_llcx: metadata_llcx,
462-
export_map: export_map,
463459
exported_symbols: exported_symbols,
464460
link_meta: link_meta,
465461
empty_param_env: tcx.empty_parameter_environment(),
@@ -499,10 +495,6 @@ impl<'b, 'tcx> SharedCrateContext<'b, 'tcx> {
499495
self.metadata_llcx
500496
}
501497

502-
pub fn export_map<'a>(&'a self) -> &'a ExportMap {
503-
&self.export_map
504-
}
505-
506498
pub fn exported_symbols<'a>(&'a self) -> &'a NodeSet {
507499
&self.exported_symbols
508500
}
@@ -702,10 +694,6 @@ impl<'b, 'tcx> CrateContext<'b, 'tcx> {
702694
unsafe { llvm::LLVMRustGetModuleDataLayout(self.llmod()) }
703695
}
704696

705-
pub fn export_map<'a>(&'a self) -> &'a ExportMap {
706-
&self.shared.export_map
707-
}
708-
709697
pub fn exported_symbols<'a>(&'a self) -> &'a NodeSet {
710698
&self.shared.exported_symbols
711699
}

src/librustdoc/core.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use rustc_driver::{driver, target_features, abort_on_err};
1313
use rustc::dep_graph::DepGraph;
1414
use rustc::session::{self, config};
1515
use rustc::hir::def_id::DefId;
16-
use rustc::hir::def::{Def, ExportMap};
16+
use rustc::hir::def::Def;
1717
use rustc::middle::privacy::AccessLevels;
1818
use rustc::ty::{self, TyCtxt, GlobalArenas};
1919
use rustc::hir::map as hir_map;
@@ -64,7 +64,6 @@ pub struct DocContext<'a, 'tcx: 'a> {
6464
pub ty_substs: RefCell<FxHashMap<Def, clean::Type>>,
6565
/// Table node id of lifetime parameter definition -> substituted lifetime
6666
pub lt_substs: RefCell<FxHashMap<ast::NodeId, clean::Lifetime>>,
67-
pub export_map: ExportMap,
6867
}
6968

7069
impl<'a, 'tcx> DocContext<'a, 'tcx> {
@@ -180,7 +179,7 @@ pub fn run_core(search_paths: SearchPaths,
180179
sess.fatal("Compilation failed, aborting rustdoc");
181180
}
182181

183-
let ty::CrateAnalysis { access_levels, export_map, .. } = analysis;
182+
let ty::CrateAnalysis { access_levels, .. } = analysis;
184183

185184
// Convert from a NodeId set to a DefId set since we don't always have easy access
186185
// to the map from defid -> nodeid
@@ -198,7 +197,6 @@ pub fn run_core(search_paths: SearchPaths,
198197
renderinfo: Default::default(),
199198
ty_substs: Default::default(),
200199
lt_substs: Default::default(),
201-
export_map: export_map,
202200
};
203201
debug!("crate: {:?}", tcx.hir.krate());
204202

src/librustdoc/visit_ast.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
198198
self.visit_item(item, None, &mut om);
199199
}
200200
self.inside_public_path = orig_inside_public_path;
201-
if let Some(exports) = self.cx.export_map.get(&id) {
201+
if let Some(exports) = self.cx.tcx.export_map.get(&id) {
202202
for export in exports {
203203
if let Def::Macro(def_id, ..) = export.def {
204204
if def_id.krate == LOCAL_CRATE {

0 commit comments

Comments
 (0)