Skip to content

Commit 034ae77

Browse files
authored
Rollup merge of rust-lang#37301 - jseyfried:improve_metadata_modules, r=eddyb
metadata: improve some confusing type and module names r? @eddyb
2 parents 7b1282c + 80fe1d2 commit 034ae77

File tree

9 files changed

+58
-77
lines changed

9 files changed

+58
-77
lines changed

src/librustc_driver/driver.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,8 @@ pub fn phase_2_configure_and_expand<'a, F>(sess: &Session,
645645
// its contents but the results of name resolution on those contents. Hopefully we'll push
646646
// this back at some point.
647647
let _ignore = sess.dep_graph.in_ignore();
648-
let mut crate_loader = CrateLoader::new(sess, &cstore, &krate, crate_name);
648+
let mut crate_loader = CrateLoader::new(sess, &cstore, crate_name, krate.config.clone());
649+
crate_loader.preprocess(&krate);
649650
let resolver_arenas = Resolver::arenas();
650651
let mut resolver =
651652
Resolver::new(sess, &krate, make_glob_map, &mut crate_loader, &resolver_arenas);

src/librustc_driver/lib.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ use rustc::session::config::nightly_options;
7777
use rustc::session::early_error;
7878
use rustc::lint::Lint;
7979
use rustc::lint;
80-
use rustc_metadata::loader;
80+
use rustc_metadata::locator;
8181
use rustc_metadata::cstore::CStore;
8282
use rustc::util::common::time;
8383

@@ -578,8 +578,7 @@ impl RustcDefaultCalls {
578578
&Input::File(ref ifile) => {
579579
let path = &(*ifile);
580580
let mut v = Vec::new();
581-
loader::list_file_metadata(&sess.target.target, path, &mut v)
582-
.unwrap();
581+
locator::list_file_metadata(&sess.target.target, path, &mut v).unwrap();
583582
println!("{}", String::from_utf8(v).unwrap());
584583
}
585584
&Input::Str { .. } => {

src/librustc_metadata/creader.rs

+39-53
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
//! Validates all used crates and extern libraries and loads their metadata
1212
1313
use cstore::{self, CStore, CrateSource, MetadataBlob};
14-
use loader::{self, CratePaths};
14+
use locator::{self, CratePaths};
1515
use macro_import;
1616
use schema::CrateRoot;
1717

@@ -40,14 +40,14 @@ use syntax::parse::token::InternedString;
4040
use syntax_pos::{self, Span, mk_sp};
4141
use log;
4242

43-
pub struct CrateLoader<'a> {
44-
pub sess: &'a Session,
45-
pub creader: CrateReader<'a>,
46-
cstore: &'a CStore,
43+
pub struct Library {
44+
pub dylib: Option<(PathBuf, PathKind)>,
45+
pub rlib: Option<(PathBuf, PathKind)>,
46+
pub metadata: MetadataBlob,
4747
}
4848

49-
pub struct CrateReader<'a> {
50-
sess: &'a Session,
49+
pub struct CrateLoader<'a> {
50+
pub sess: &'a Session,
5151
cstore: &'a CStore,
5252
next_crate_num: CrateNum,
5353
foreign_item_map: FnvHashMap<String, Vec<ast::NodeId>>,
@@ -129,7 +129,7 @@ struct ExtensionCrate {
129129

130130
enum PMDSource {
131131
Registered(Rc<cstore::CrateMetadata>),
132-
Owned(loader::Library),
132+
Owned(Library),
133133
}
134134

135135
impl Deref for PMDSource {
@@ -145,7 +145,7 @@ impl Deref for PMDSource {
145145

146146
enum LoadResult {
147147
Previous(CrateNum),
148-
Loaded(loader::Library),
148+
Loaded(Library),
149149
}
150150

151151
pub struct Macros {
@@ -159,13 +159,13 @@ pub struct Macros {
159159
pub dylib: Option<PathBuf>,
160160
}
161161

162-
impl<'a> CrateReader<'a> {
162+
impl<'a> CrateLoader<'a> {
163163
pub fn new(sess: &'a Session,
164164
cstore: &'a CStore,
165165
local_crate_name: &str,
166166
local_crate_config: ast::CrateConfig)
167-
-> CrateReader<'a> {
168-
CrateReader {
167+
-> Self {
168+
CrateLoader {
169169
sess: sess,
170170
cstore: cstore,
171171
next_crate_num: cstore.next_crate_num(),
@@ -281,7 +281,7 @@ impl<'a> CrateReader<'a> {
281281
ident: &str,
282282
name: &str,
283283
span: Span,
284-
lib: loader::Library,
284+
lib: Library,
285285
explicitly_linked: bool)
286286
-> (CrateNum, Rc<cstore::CrateMetadata>,
287287
cstore::CrateSource) {
@@ -306,7 +306,7 @@ impl<'a> CrateReader<'a> {
306306
// Maintain a reference to the top most crate.
307307
let root = if root.is_some() { root } else { &crate_paths };
308308

309-
let loader::Library { dylib, rlib, metadata } = lib;
309+
let Library { dylib, rlib, metadata } = lib;
310310

311311
let cnum_map = self.resolve_crate_deps(root, &crate_root, &metadata, cnum, span);
312312

@@ -352,7 +352,7 @@ impl<'a> CrateReader<'a> {
352352
Some(cnum) => LoadResult::Previous(cnum),
353353
None => {
354354
info!("falling back to a load");
355-
let mut load_ctxt = loader::Context {
355+
let mut locate_ctxt = locator::Context {
356356
sess: self.sess,
357357
span: span,
358358
ident: ident,
@@ -368,9 +368,9 @@ impl<'a> CrateReader<'a> {
368368
rejected_via_version: vec!(),
369369
should_match_name: true,
370370
};
371-
match self.load(&mut load_ctxt) {
371+
match self.load(&mut locate_ctxt) {
372372
Some(result) => result,
373-
None => load_ctxt.report_load_errs(),
373+
None => locate_ctxt.report_errs(),
374374
}
375375
}
376376
};
@@ -390,8 +390,8 @@ impl<'a> CrateReader<'a> {
390390
}
391391
}
392392

393-
fn load(&mut self, loader: &mut loader::Context) -> Option<LoadResult> {
394-
let library = match loader.maybe_load_library_crate() {
393+
fn load(&mut self, locate_ctxt: &mut locator::Context) -> Option<LoadResult> {
394+
let library = match locate_ctxt.maybe_load_library_crate() {
395395
Some(lib) => lib,
396396
None => return None,
397397
};
@@ -405,11 +405,11 @@ impl<'a> CrateReader<'a> {
405405
// don't want to match a host crate against an equivalent target one
406406
// already loaded.
407407
let root = library.metadata.get_root();
408-
if loader.triple == self.sess.opts.target_triple {
408+
if locate_ctxt.triple == self.sess.opts.target_triple {
409409
let mut result = LoadResult::Loaded(library);
410410
self.cstore.iter_crate_data(|cnum, data| {
411411
if data.name() == root.name && root.hash == data.hash() {
412-
assert!(loader.hash.is_none());
412+
assert!(locate_ctxt.hash.is_none());
413413
info!("load success, going to previous cnum: {}", cnum);
414414
result = LoadResult::Previous(cnum);
415415
}
@@ -494,7 +494,7 @@ impl<'a> CrateReader<'a> {
494494
let mut target_only = false;
495495
let ident = info.ident.clone();
496496
let name = info.name.clone();
497-
let mut load_ctxt = loader::Context {
497+
let mut locate_ctxt = locator::Context {
498498
sess: self.sess,
499499
span: span,
500500
ident: &ident[..],
@@ -510,7 +510,7 @@ impl<'a> CrateReader<'a> {
510510
rejected_via_version: vec!(),
511511
should_match_name: true,
512512
};
513-
let library = self.load(&mut load_ctxt).or_else(|| {
513+
let library = self.load(&mut locate_ctxt).or_else(|| {
514514
if !is_cross {
515515
return None
516516
}
@@ -519,15 +519,15 @@ impl<'a> CrateReader<'a> {
519519
target_only = true;
520520
should_link = info.should_link;
521521

522-
load_ctxt.target = &self.sess.target.target;
523-
load_ctxt.triple = target_triple;
524-
load_ctxt.filesearch = self.sess.target_filesearch(PathKind::Crate);
522+
locate_ctxt.target = &self.sess.target.target;
523+
locate_ctxt.triple = target_triple;
524+
locate_ctxt.filesearch = self.sess.target_filesearch(PathKind::Crate);
525525

526-
self.load(&mut load_ctxt)
526+
self.load(&mut locate_ctxt)
527527
});
528528
let library = match library {
529529
Some(l) => l,
530-
None => load_ctxt.report_load_errs(),
530+
None => locate_ctxt.report_errs(),
531531
};
532532

533533
let (dylib, metadata) = match library {
@@ -890,7 +890,7 @@ impl<'a> CrateReader<'a> {
890890
}
891891

892892
impl ExtensionCrate {
893-
fn register(self, creader: &mut CrateReader) {
893+
fn register(self, loader: &mut CrateLoader) {
894894
if !self.should_link {
895895
return
896896
}
@@ -901,31 +901,17 @@ impl ExtensionCrate {
901901
};
902902

903903
// Register crate now to avoid double-reading metadata
904-
creader.register_crate(&None,
905-
&self.ident,
906-
&self.name,
907-
self.span,
908-
library,
909-
true);
904+
loader.register_crate(&None, &self.ident, &self.name, self.span, library, true);
910905
}
911906
}
912907

913908
impl<'a> CrateLoader<'a> {
914-
pub fn new(sess: &'a Session, cstore: &'a CStore, krate: &ast::Crate, crate_name: &str)
915-
-> Self {
916-
let loader = CrateLoader {
917-
sess: sess,
918-
cstore: cstore,
919-
creader: CrateReader::new(sess, cstore, crate_name, krate.config.clone()),
920-
};
921-
909+
pub fn preprocess(&mut self, krate: &ast::Crate) {
922910
for attr in krate.attrs.iter().filter(|m| m.name() == "link_args") {
923911
if let Some(ref linkarg) = attr.value_str() {
924-
loader.cstore.add_used_link_args(&linkarg);
912+
self.cstore.add_used_link_args(&linkarg);
925913
}
926914
}
927-
928-
loader
929915
}
930916

931917
fn process_foreign_mod(&mut self, i: &ast::Item, fm: &ast::ForeignMod) {
@@ -982,7 +968,7 @@ impl<'a> CrateLoader<'a> {
982968
Some(name) => name,
983969
None => continue,
984970
};
985-
let list = self.creader.foreign_item_map.entry(lib_name.to_string())
971+
let list = self.foreign_item_map.entry(lib_name.to_string())
986972
.or_insert(Vec::new());
987973
list.extend(fm.items.iter().map(|it| it.id));
988974
}
@@ -991,8 +977,8 @@ impl<'a> CrateLoader<'a> {
991977

992978
impl<'a> middle::cstore::CrateLoader for CrateLoader<'a> {
993979
fn postprocess(&mut self, krate: &ast::Crate) {
994-
self.creader.inject_allocator_crate();
995-
self.creader.inject_panic_runtime(krate);
980+
self.inject_allocator_crate();
981+
self.inject_panic_runtime(krate);
996982

997983
if log_enabled!(log::INFO) {
998984
dump_crates(&self.cstore);
@@ -1001,7 +987,7 @@ impl<'a> middle::cstore::CrateLoader for CrateLoader<'a> {
1001987
for &(ref name, kind) in &self.sess.opts.libs {
1002988
register_native_lib(self.sess, self.cstore, None, name.clone(), kind);
1003989
}
1004-
self.creader.register_statically_included_foreign_items();
990+
self.register_statically_included_foreign_items();
1005991
}
1006992

1007993
fn process_item(&mut self, item: &ast::Item, definitions: &hir_map::Definitions) {
@@ -1024,12 +1010,12 @@ impl<'a> middle::cstore::CrateLoader for CrateLoader<'a> {
10241010
}
10251011
}
10261012

1027-
if let Some(info) = self.creader.extract_crate_info(item) {
1013+
if let Some(info) = self.extract_crate_info(item) {
10281014
if !info.should_link {
10291015
return;
10301016
}
10311017

1032-
let (cnum, ..) = self.creader.resolve_crate(
1018+
let (cnum, ..) = self.resolve_crate(
10331019
&None, &info.ident, &info.name, None, item.span, PathKind::Crate, true,
10341020
);
10351021

@@ -1038,7 +1024,7 @@ impl<'a> middle::cstore::CrateLoader for CrateLoader<'a> {
10381024

10391025
let extern_crate =
10401026
ExternCrate { def_id: def_id, span: item.span, direct: true, path_len: len };
1041-
self.creader.update_extern_crate(cnum, extern_crate, &mut FnvHashSet());
1027+
self.update_extern_crate(cnum, extern_crate, &mut FnvHashSet());
10421028

10431029
self.cstore.add_extern_mod_stmt_cnum(info.id, cnum);
10441030
}

src/librustc_metadata/cstore.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// The crate store - a central repo for information collected about external
1212
// crates and libraries
1313

14-
use loader;
14+
use locator;
1515
use schema;
1616

1717
use rustc::dep_graph::DepGraph;
@@ -43,7 +43,7 @@ pub type CrateNumMap = IndexVec<CrateNum, CrateNum>;
4343

4444
pub enum MetadataBlob {
4545
Inflated(Bytes),
46-
Archive(loader::ArchiveMetadata),
46+
Archive(locator::ArchiveMetadata),
4747
}
4848

4949
/// Holds information about a syntax_pos::FileMap imported from another crate.

src/librustc_metadata/csearch.rs renamed to src/librustc_metadata/cstore_impl.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
use cstore;
1212
use encoder;
13-
use loader;
13+
use locator;
1414
use schema;
1515

1616
use rustc::middle::cstore::{InlinedItem, CrateStore, CrateSource, ExternCrate};
@@ -497,12 +497,12 @@ impl<'tcx> CrateStore<'tcx> for cstore::CStore {
497497

498498
fn metadata_filename(&self) -> &str
499499
{
500-
loader::METADATA_FILENAME
500+
locator::METADATA_FILENAME
501501
}
502502

503503
fn metadata_section_name(&self, target: &Target) -> &str
504504
{
505-
loader::meta_section_name(target)
505+
locator::meta_section_name(target)
506506
}
507507

508508
fn used_crates(&self, prefer: LinkagePreference) -> Vec<(CrateNum, Option<PathBuf>)>

src/librustc_metadata/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ mod index_builder;
5353
mod index;
5454
mod encoder;
5555
mod decoder;
56-
mod csearch;
56+
mod cstore_impl;
5757
mod schema;
5858

5959
pub mod creader;
6060
pub mod cstore;
61-
pub mod loader;
61+
pub mod locator;
6262
pub mod macro_import;
6363

6464
__build_diagnostic_array! { librustc_metadata, DIAGNOSTICS }

src/librustc_metadata/loader.rs renamed to src/librustc_metadata/locator.rs

+4-9
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,10 @@
210210
//!
211211
//! That's the general overview of loading crates in the compiler, but it's by
212212
//! no means all of the necessary details. Take a look at the rest of
213-
//! metadata::loader or metadata::creader for all the juicy details!
213+
//! metadata::locator or metadata::creader for all the juicy details!
214214
215215
use cstore::MetadataBlob;
216+
use creader::Library;
216217
use schema::{METADATA_HEADER, rustc_version};
217218

218219
use rustc::hir::svh::Svh;
@@ -263,12 +264,6 @@ pub struct Context<'a> {
263264
pub should_match_name: bool,
264265
}
265266

266-
pub struct Library {
267-
pub dylib: Option<(PathBuf, PathKind)>,
268-
pub rlib: Option<(PathBuf, PathKind)>,
269-
pub metadata: MetadataBlob,
270-
}
271-
272267
pub struct ArchiveMetadata {
273268
_archive: ArchiveRO,
274269
// points into self._archive
@@ -315,10 +310,10 @@ impl<'a> Context<'a> {
315310
}
316311

317312
pub fn load_library_crate(&mut self) -> Library {
318-
self.find_library_crate().unwrap_or_else(|| self.report_load_errs())
313+
self.find_library_crate().unwrap_or_else(|| self.report_errs())
319314
}
320315

321-
pub fn report_load_errs(&mut self) -> ! {
316+
pub fn report_errs(&mut self) -> ! {
322317
let add = match self.root {
323318
&None => String::new(),
324319
&Some(ref r) => format!(" which `{}` depends on",

src/librustc_metadata/macro_import.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ impl<'a> CrateLoader<'a> {
122122
return Vec::new();
123123
}
124124

125-
let mut macros = self.creader.read_macros(vi);
125+
let mut macros = self.read_macros(vi);
126126
let mut ret = Vec::new();
127127
let mut seen = HashSet::new();
128128

0 commit comments

Comments
 (0)