Skip to content

Commit d2f87e3

Browse files
authored
Rollup merge of rust-lang#65170 - petrochenkov:cload, r=eddyb
rustc_metadata: Privatize private code and remove dead code Also some minor cleanup and documentation improvements. r? @eddyb
2 parents e413dc3 + f5baad2 commit d2f87e3

20 files changed

+309
-394
lines changed

src/librustc/middle/cstore.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ pub struct CrateSource {
3232
pub rmeta: Option<(PathBuf, PathKind)>,
3333
}
3434

35+
impl CrateSource {
36+
pub fn paths(&self) -> impl Iterator<Item = &PathBuf> {
37+
self.dylib.iter().chain(self.rlib.iter()).chain(self.rmeta.iter()).map(|p| &p.0)
38+
}
39+
}
40+
3541
#[derive(RustcEncodable, RustcDecodable, Copy, Clone,
3642
Ord, PartialOrd, Eq, PartialEq, Debug, HashStable)]
3743
pub enum DepKind {
@@ -208,7 +214,6 @@ pub trait CrateStore {
208214
fn crate_is_private_dep_untracked(&self, cnum: CrateNum) -> bool;
209215
fn crate_disambiguator_untracked(&self, cnum: CrateNum) -> CrateDisambiguator;
210216
fn crate_hash_untracked(&self, cnum: CrateNum) -> Svh;
211-
fn extern_mod_stmt_cnum_untracked(&self, emod_id: ast::NodeId) -> Option<CrateNum>;
212217
fn item_generics_cloned_untracked(&self, def: DefId, sess: &Session) -> ty::Generics;
213218
fn postorder_cnums_untracked(&self) -> Vec<CrateNum>;
214219

src/librustc/ty/context.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ use crate::ty::subst::{UserSubsts, GenericArgKind};
4343
use crate::ty::{BoundVar, BindingMode};
4444
use crate::ty::CanonicalPolyFnSig;
4545
use crate::util::common::ErrorReported;
46-
use crate::util::nodemap::{DefIdMap, DefIdSet, ItemLocalMap, ItemLocalSet};
46+
use crate::util::nodemap::{DefIdMap, DefIdSet, ItemLocalMap, ItemLocalSet, NodeMap};
4747
use crate::util::nodemap::{FxHashMap, FxHashSet};
4848
use crate::util::profiling::SelfProfilerRef;
4949

@@ -1051,6 +1051,9 @@ pub struct GlobalCtxt<'tcx> {
10511051
/// Common consts, pre-interned for your convenience.
10521052
pub consts: CommonConsts<'tcx>,
10531053

1054+
/// Resolutions of `extern crate` items produced by resolver.
1055+
extern_crate_map: NodeMap<CrateNum>,
1056+
10541057
/// Map indicating what traits are in scope for places where this
10551058
/// is relevant; generated by resolve.
10561059
trait_map: FxHashMap<DefIndex,
@@ -1274,6 +1277,7 @@ impl<'tcx> TyCtxt<'tcx> {
12741277
types: common_types,
12751278
lifetimes: common_lifetimes,
12761279
consts: common_consts,
1280+
extern_crate_map: resolutions.extern_crate_map,
12771281
trait_map,
12781282
export_map: resolutions.export_map.into_iter().map(|(k, v)| {
12791283
let exports: Vec<_> = v.into_iter().map(|e| {
@@ -2951,7 +2955,7 @@ pub fn provide(providers: &mut ty::query::Providers<'_>) {
29512955
};
29522956
providers.extern_mod_stmt_cnum = |tcx, id| {
29532957
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()
29552959
};
29562960
providers.all_crate_nums = |tcx, cnum| {
29572961
assert_eq!(cnum, LOCAL_CRATE);

src/librustc/ty/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use crate::ty::subst::{Subst, InternalSubsts, SubstsRef};
2828
use crate::ty::util::{IntTypeExt, Discr};
2929
use crate::ty::walk::TypeWalker;
3030
use crate::util::captures::Captures;
31-
use crate::util::nodemap::{NodeSet, DefIdMap, FxHashMap};
31+
use crate::util::nodemap::{NodeMap, NodeSet, DefIdMap, FxHashMap};
3232
use arena::SyncDroplessArena;
3333
use crate::session::DataTypeKind;
3434

@@ -121,6 +121,7 @@ mod sty;
121121

122122
#[derive(Clone)]
123123
pub struct Resolutions {
124+
pub extern_crate_map: NodeMap<CrateNum>,
124125
pub trait_map: TraitMap,
125126
pub maybe_unused_trait_imports: NodeSet,
126127
pub maybe_unused_extern_crates: Vec<(NodeId, Span)>,

src/librustc_driver/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ impl RustcDefaultCalls {
616616
let mut v = Vec::new();
617617
locator::list_file_metadata(&sess.target.target,
618618
path,
619-
&*cstore.metadata_loader,
619+
cstore,
620620
&mut v)
621621
.unwrap();
622622
println!("{}", String::from_utf8(v).unwrap());

src/librustc_interface/passes.rs

+12-11
Original file line numberDiff line numberDiff line change
@@ -130,15 +130,15 @@ pub fn configure_and_expand(
130130
let crate_name = crate_name.to_string();
131131
let (result, resolver) = BoxedResolver::new(static move || {
132132
let sess = &*sess;
133-
let mut crate_loader = CrateLoader::new(sess, &*cstore, &crate_name);
133+
let crate_loader = CrateLoader::new(sess, &*cstore, &crate_name);
134134
let resolver_arenas = Resolver::arenas();
135135
let res = configure_and_expand_inner(
136136
sess,
137137
&*cstore,
138138
krate,
139139
&crate_name,
140140
&resolver_arenas,
141-
&mut crate_loader,
141+
&crate_loader,
142142
plugin_info,
143143
);
144144
let mut resolver = match res {
@@ -169,6 +169,7 @@ impl ExpansionResult {
169169
ExpansionResult {
170170
defs: Steal::new(resolver.definitions),
171171
resolutions: Steal::new(Resolutions {
172+
extern_crate_map: resolver.extern_crate_map,
172173
export_map: resolver.export_map,
173174
trait_map: resolver.trait_map,
174175
glob_map: resolver.glob_map,
@@ -187,6 +188,7 @@ impl ExpansionResult {
187188
ExpansionResult {
188189
defs: Steal::new(resolver.definitions.clone()),
189190
resolutions: Steal::new(Resolutions {
191+
extern_crate_map: resolver.extern_crate_map.clone(),
190192
export_map: resolver.export_map.clone(),
191193
trait_map: resolver.trait_map.clone(),
192194
glob_map: resolver.glob_map.clone(),
@@ -319,7 +321,7 @@ fn configure_and_expand_inner<'a>(
319321
mut krate: ast::Crate,
320322
crate_name: &str,
321323
resolver_arenas: &'a ResolverArenas<'a>,
322-
crate_loader: &'a mut CrateLoader<'a>,
324+
crate_loader: &'a CrateLoader<'a>,
323325
plugin_info: PluginInfo,
324326
) -> Result<(ast::Crate, Resolver<'a>)> {
325327
time(sess, "pre-AST-expansion lint checks", || {
@@ -663,16 +665,15 @@ fn write_out_deps(compiler: &Compiler, outputs: &OutputFilenames, out_filenames:
663665

664666
if sess.binary_dep_depinfo() {
665667
for cnum in compiler.cstore.crates_untracked() {
666-
let metadata = compiler.cstore.crate_data_as_rc_any(cnum);
667-
let metadata = metadata.downcast_ref::<cstore::CrateMetadata>().unwrap();
668-
if let Some((path, _)) = &metadata.source.dylib {
669-
files.push(escape_dep_filename(&FileName::Real(path.clone())));
668+
let source = compiler.cstore.crate_source_untracked(cnum);
669+
if let Some((path, _)) = source.dylib {
670+
files.push(escape_dep_filename(&FileName::Real(path)));
670671
}
671-
if let Some((path, _)) = &metadata.source.rlib {
672-
files.push(escape_dep_filename(&FileName::Real(path.clone())));
672+
if let Some((path, _)) = source.rlib {
673+
files.push(escape_dep_filename(&FileName::Real(path)));
673674
}
674-
if let Some((path, _)) = &metadata.source.rmeta {
675-
files.push(escape_dep_filename(&FileName::Real(path.clone())));
675+
if let Some((path, _)) = source.rmeta {
676+
files.push(escape_dep_filename(&FileName::Real(path)));
676677
}
677678
}
678679
}

0 commit comments

Comments
 (0)