Skip to content

Commit d18b344

Browse files
committed
Move resolve arenas/crate loader outside of the core of phase_2_configure_and_expand
1 parent f7a8a97 commit d18b344

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

src/librustc_driver/driver.rs

+16-11
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use rustc::util::common::{ErrorReported, time};
2828
use rustc_allocator as allocator;
2929
use rustc_borrowck as borrowck;
3030
use rustc_incremental;
31-
use rustc_resolve::{MakeGlobMap, Resolver};
31+
use rustc_resolve::{MakeGlobMap, Resolver, ResolverArenas};
3232
use rustc_metadata::creader::CrateLoader;
3333
use rustc_metadata::cstore::{self, CStore};
3434
use rustc_trans_utils::trans_crate::TransCrate;
@@ -139,6 +139,14 @@ pub fn compile_input(trans: Box<TransCrate>,
139139

140140
let crate_name =
141141
::rustc_trans_utils::link::find_crate_name(Some(sess), &krate.attrs, input);
142+
143+
// Currently, we ignore the name resolution data structures for the purposes of dependency
144+
// tracking. Instead we will run name resolution and include its output in the hash of each
145+
// item, much like we do for macro expansion. In other words, the hash reflects not just
146+
// its contents but the results of name resolution on those contents. Hopefully we'll push
147+
// this back at some point.
148+
let mut crate_loader = CrateLoader::new(sess, &cstore, &crate_name);
149+
let resolver_arenas = Resolver::arenas();
142150
let ExpansionResult { expanded_crate, defs, analysis, resolutions, mut hir_forest } = {
143151
phase_2_configure_and_expand(
144152
sess,
@@ -148,6 +156,8 @@ pub fn compile_input(trans: Box<TransCrate>,
148156
&crate_name,
149157
addl_plugins,
150158
control.make_glob_map,
159+
&resolver_arenas,
160+
&mut crate_loader,
151161
|expanded_crate| {
152162
let mut state = CompileState::state_after_expand(
153163
input, sess, outdir, output, &cstore, expanded_crate, &crate_name,
@@ -569,13 +579,15 @@ pub struct ExpansionResult {
569579
/// standard library and prelude, and name resolution.
570580
///
571581
/// Returns `None` if we're aborting after handling -W help.
572-
pub fn phase_2_configure_and_expand<F>(sess: &Session,
573-
cstore: &CStore,
582+
pub fn phase_2_configure_and_expand<'a, F>(sess: &'a Session,
583+
cstore: &'a CStore,
574584
krate: ast::Crate,
575585
registry: Option<Registry>,
576586
crate_name: &str,
577587
addl_plugins: Option<Vec<String>>,
578588
make_glob_map: MakeGlobMap,
589+
resolver_arenas: &'a ResolverArenas<'a>,
590+
crate_loader: &'a mut CrateLoader,
579591
after_expand: F)
580592
-> Result<ExpansionResult, CompileIncomplete>
581593
where F: FnOnce(&ast::Crate) -> CompileResult,
@@ -666,19 +678,12 @@ pub fn phase_2_configure_and_expand<F>(sess: &Session,
666678
return Err(CompileIncomplete::Stopped);
667679
}
668680

669-
// Currently, we ignore the name resolution data structures for the purposes of dependency
670-
// tracking. Instead we will run name resolution and include its output in the hash of each
671-
// item, much like we do for macro expansion. In other words, the hash reflects not just
672-
// its contents but the results of name resolution on those contents. Hopefully we'll push
673-
// this back at some point.
674-
let mut crate_loader = CrateLoader::new(sess, &cstore, crate_name);
675-
let resolver_arenas = Resolver::arenas();
676681
let mut resolver = Resolver::new(sess,
677682
cstore,
678683
&krate,
679684
crate_name,
680685
make_glob_map,
681-
&mut crate_loader,
686+
crate_loader,
682687
&resolver_arenas);
683688
resolver.whitelisted_legacy_custom_derives = whitelisted_legacy_custom_derives;
684689
syntax_ext::register_builtins(&mut resolver, syntax_exts, sess.features.borrow().quote);

src/librustdoc/core.rs

+1
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ pub fn run_core(search_paths: SearchPaths,
223223
resolve::MakeGlobMap::No,
224224
&mut crate_loader,
225225
&resolver_arenas);
226+
resolver.resolve_imports();
226227
resolver.resolve_crate(&expanded_crate);
227228

228229
let ctxt = DocContext {

0 commit comments

Comments
 (0)