From 9ac468b841cf01e7b575f4c20d10df8096c31f7a Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 10 May 2016 15:34:25 +0200 Subject: [PATCH 1/5] Store a reference rather than a RefCell in LocalCrateReader. --- src/librustc_driver/driver.rs | 2 +- src/librustc_driver/test.rs | 2 +- src/librustc_metadata/creader.rs | 9 ++++----- src/librustdoc/core.rs | 2 +- src/test/run-make/execution-engine/test.rs | 2 +- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index e72204e5e22de..8841480f7f644 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -148,7 +148,7 @@ pub fn compile_input(sess: &Session, time(sess.time_passes(), "external crate/lib resolution", - || LocalCrateReader::new(sess, &cstore, defs, &expanded_crate, &id) + || LocalCrateReader::new(sess, &cstore, &defs.borrow(), &expanded_crate, &id) .read_crates(&dep_graph)); time(sess.time_passes(), diff --git a/src/librustc_driver/test.rs b/src/librustc_driver/test.rs index 869bbb723ef41..ed9a092b6ff2f 100644 --- a/src/librustc_driver/test.rs +++ b/src/librustc_driver/test.rs @@ -121,7 +121,7 @@ fn test_env(source_string: &str, let dep_graph = DepGraph::new(false); let krate = driver::assign_node_ids(&sess, krate); let defs = &RefCell::new(hir_map::collect_definitions(&krate)); - LocalCrateReader::new(&sess, &cstore, defs, &krate, "test_crate").read_crates(&dep_graph); + LocalCrateReader::new(&sess, &cstore, &defs.borrow(), &krate, "test_crate").read_crates(&dep_graph); let _ignore = dep_graph.in_ignore(); let (_, resolutions, mut hir_forest) = { diff --git a/src/librustc_metadata/creader.rs b/src/librustc_metadata/creader.rs index 190e8552d199a..2b02a745bef74 100644 --- a/src/librustc_metadata/creader.rs +++ b/src/librustc_metadata/creader.rs @@ -46,7 +46,7 @@ pub struct LocalCrateReader<'a> { cstore: &'a CStore, creader: CrateReader<'a>, krate: &'a ast::Crate, - defintions: &'a RefCell, + defintions: &'a hir_map::Definitions, } pub struct CrateReader<'a> { @@ -843,7 +843,7 @@ impl<'a> CrateReader<'a> { impl<'a> LocalCrateReader<'a> { pub fn new(sess: &'a Session, cstore: &'a CStore, - defs: &'a RefCell, + defs: &'a hir_map::Definitions, krate: &'a ast::Crate, local_crate_name: &str) -> LocalCrateReader<'a> { @@ -902,9 +902,8 @@ impl<'a> LocalCrateReader<'a> { PathKind::Crate, true); - let defs = self.defintions.borrow(); - let def_id = defs.opt_local_def_id(i.id).unwrap(); - let len = defs.def_path(def_id.index).data.len(); + let def_id = self.defintions.opt_local_def_id(i.id).unwrap(); + let len = self.defintions.def_path(def_id.index).data.len(); self.creader.update_extern_crate(cnum, ExternCrate { diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs index e5fc84037ce57..77a780805a695 100644 --- a/src/librustdoc/core.rs +++ b/src/librustdoc/core.rs @@ -154,7 +154,7 @@ pub fn run_core(search_paths: SearchPaths, let dep_graph = DepGraph::new(false); let defs = &RefCell::new(hir_map::collect_definitions(&krate)); - LocalCrateReader::new(&sess, &cstore, &defs, &krate, &name).read_crates(&dep_graph); + LocalCrateReader::new(&sess, &cstore, &defs.borrow(), &krate, &name).read_crates(&dep_graph); // Lower ast -> hir and resolve. let (analysis, resolutions, mut hir_forest) = { diff --git a/src/test/run-make/execution-engine/test.rs b/src/test/run-make/execution-engine/test.rs index 98412c08df520..f46846c34a5ef 100644 --- a/src/test/run-make/execution-engine/test.rs +++ b/src/test/run-make/execution-engine/test.rs @@ -241,7 +241,7 @@ fn compile_program(input: &str, sysroot: PathBuf) let dep_graph = DepGraph::new(sess.opts.build_dep_graph()); let krate = driver::assign_node_ids(&sess, krate); let defs = RefCell::new(ast_map::collect_definitions(&krate)); - LocalCrateReader::new(&sess, &cstore, &defs, &krate, &id).read_crates(&dep_graph); + LocalCrateReader::new(&sess, &cstore, &defs.borrow(), &krate, &id).read_crates(&dep_graph); let (analysis, resolutions, mut hir_forest) = { let defs = &mut *defs.borrow_mut(); driver::lower_and_resolve(&sess, &id, defs, &krate, dep_graph, MakeGlobMap::No) From 8d3531d3db513bd71ad1ac041ad9a2172ec34012 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 10 May 2016 15:36:50 +0200 Subject: [PATCH 2/5] Correct typo in LocalCrateReader::definitions. --- src/librustc_metadata/creader.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/librustc_metadata/creader.rs b/src/librustc_metadata/creader.rs index 2b02a745bef74..62c208dbcb2a4 100644 --- a/src/librustc_metadata/creader.rs +++ b/src/librustc_metadata/creader.rs @@ -46,7 +46,7 @@ pub struct LocalCrateReader<'a> { cstore: &'a CStore, creader: CrateReader<'a>, krate: &'a ast::Crate, - defintions: &'a hir_map::Definitions, + definitions: &'a hir_map::Definitions, } pub struct CrateReader<'a> { @@ -852,7 +852,7 @@ impl<'a> LocalCrateReader<'a> { cstore: cstore, creader: CrateReader::new(sess, cstore, local_crate_name), krate: krate, - defintions: defs, + definitions: defs, } } @@ -902,8 +902,8 @@ impl<'a> LocalCrateReader<'a> { PathKind::Crate, true); - let def_id = self.defintions.opt_local_def_id(i.id).unwrap(); - let len = self.defintions.def_path(def_id.index).data.len(); + let def_id = self.definitions.opt_local_def_id(i.id).unwrap(); + let len = self.definitions.def_path(def_id.index).data.len(); self.creader.update_extern_crate(cnum, ExternCrate { From e919f251800b792e15b3c72cdfb19e539cd74971 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 10 May 2016 15:34:52 +0200 Subject: [PATCH 3/5] Delay wrapping Definitions into a RefCell around LocalCrateReader. --- src/librustc_driver/driver.rs | 13 +++++++------ src/librustc_driver/test.rs | 9 +++++---- src/librustdoc/core.rs | 9 +++++---- src/test/run-make/execution-engine/test.rs | 11 ++++++----- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index 8841480f7f644..3f9fa0a23c2d8 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -142,13 +142,13 @@ pub fn compile_input(sess: &Session, let dep_graph = DepGraph::new(sess.opts.build_dep_graph()); // Collect defintions for def ids. - let defs = &RefCell::new(time(sess.time_passes(), - "collecting defs", - || hir_map::collect_definitions(&expanded_crate))); + let mut defs = time(sess.time_passes(), + "collecting defs", + || hir_map::collect_definitions(&expanded_crate)); time(sess.time_passes(), "external crate/lib resolution", - || LocalCrateReader::new(sess, &cstore, &defs.borrow(), &expanded_crate, &id) + || LocalCrateReader::new(sess, &cstore, &defs, &expanded_crate, &id) .read_crates(&dep_graph)); time(sess.time_passes(), @@ -156,8 +156,8 @@ pub fn compile_input(sess: &Session, || lint::check_ast_crate(sess, &expanded_crate)); let (analysis, resolutions, mut hir_forest) = { - let defs = &mut *defs.borrow_mut(); - lower_and_resolve(sess, &id, defs, &expanded_crate, dep_graph, control.make_glob_map) + lower_and_resolve(sess, &id, &mut defs, &expanded_crate, dep_graph, + control.make_glob_map) }; // Discard MTWT tables that aren't required past lowering to HIR. @@ -165,6 +165,7 @@ pub fn compile_input(sess: &Session, syntax::ext::mtwt::clear_tables(); } + let defs = &RefCell::new(defs); let arenas = ty::CtxtArenas::new(); // Construct the HIR map diff --git a/src/librustc_driver/test.rs b/src/librustc_driver/test.rs index ed9a092b6ff2f..59713c66afcb6 100644 --- a/src/librustc_driver/test.rs +++ b/src/librustc_driver/test.rs @@ -120,15 +120,16 @@ fn test_env(source_string: &str, let dep_graph = DepGraph::new(false); let krate = driver::assign_node_ids(&sess, krate); - let defs = &RefCell::new(hir_map::collect_definitions(&krate)); - LocalCrateReader::new(&sess, &cstore, &defs.borrow(), &krate, "test_crate").read_crates(&dep_graph); + let mut defs = hir_map::collect_definitions(&krate); + LocalCrateReader::new(&sess, &cstore, &defs, &krate, "test_crate").read_crates(&dep_graph); let _ignore = dep_graph.in_ignore(); let (_, resolutions, mut hir_forest) = { - let (defs, dep_graph) = (&mut *defs.borrow_mut(), dep_graph.clone()); - driver::lower_and_resolve(&sess, "test-crate", defs, &krate, dep_graph, MakeGlobMap::No) + driver::lower_and_resolve(&sess, "test-crate", &mut defs, &krate, dep_graph.clone(), + MakeGlobMap::No) }; + let defs = &RefCell::new(defs); let arenas = ty::CtxtArenas::new(); let ast_map = hir_map::map_crate(&mut hir_forest, defs); diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs index 77a780805a695..857a1176f496a 100644 --- a/src/librustdoc/core.rs +++ b/src/librustdoc/core.rs @@ -153,15 +153,16 @@ pub fn run_core(search_paths: SearchPaths, let krate = driver::assign_node_ids(&sess, krate); let dep_graph = DepGraph::new(false); - let defs = &RefCell::new(hir_map::collect_definitions(&krate)); - LocalCrateReader::new(&sess, &cstore, &defs.borrow(), &krate, &name).read_crates(&dep_graph); + let mut defs = hir_map::collect_definitions(&krate); + LocalCrateReader::new(&sess, &cstore, &defs, &krate, &name).read_crates(&dep_graph); // Lower ast -> hir and resolve. let (analysis, resolutions, mut hir_forest) = { - let defs = &mut *defs.borrow_mut(); - driver::lower_and_resolve(&sess, &name, defs, &krate, dep_graph, resolve::MakeGlobMap::No) + driver::lower_and_resolve(&sess, &name, &mut defs, &krate, dep_graph, + resolve::MakeGlobMap::No) }; + let defs = &RefCell::new(defs); let arenas = ty::CtxtArenas::new(); let hir_map = hir_map::map_crate(&mut hir_forest, defs); diff --git a/src/test/run-make/execution-engine/test.rs b/src/test/run-make/execution-engine/test.rs index f46846c34a5ef..0d10f31556644 100644 --- a/src/test/run-make/execution-engine/test.rs +++ b/src/test/run-make/execution-engine/test.rs @@ -240,14 +240,15 @@ fn compile_program(input: &str, sysroot: PathBuf) let dep_graph = DepGraph::new(sess.opts.build_dep_graph()); let krate = driver::assign_node_ids(&sess, krate); - let defs = RefCell::new(ast_map::collect_definitions(&krate)); - LocalCrateReader::new(&sess, &cstore, &defs.borrow(), &krate, &id).read_crates(&dep_graph); + let mut defs = ast_map::collect_definitions(&krate); + LocalCrateReader::new(&sess, &cstore, &defs, &krate, &id).read_crates(&dep_graph); let (analysis, resolutions, mut hir_forest) = { - let defs = &mut *defs.borrow_mut(); - driver::lower_and_resolve(&sess, &id, defs, &krate, dep_graph, MakeGlobMap::No) + driver::lower_and_resolve(&sess, &id, &mut defs, &krate, dep_graph, MakeGlobMap::No) }; + + let defs = &RefCell::new(defs); let arenas = ty::CtxtArenas::new(); - let ast_map = ast_map::map_crate(&mut hir_forest, &defs); + let ast_map = ast_map::map_crate(&mut hir_forest, defs); abort_on_err(driver::phase_3_run_analysis_passes( &sess, ast_map, analysis, resolutions, &arenas, &id, From 5511e6568f41b7ca9d57b0055c193be187e437d8 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 10 May 2016 15:43:51 +0200 Subject: [PATCH 4/5] Hand ownership of the Definitions to map_crate. --- src/librustc/hir/map/mod.rs | 6 +++--- src/librustc_driver/driver.rs | 1 - src/librustc_driver/test.rs | 2 -- src/librustdoc/core.rs | 1 - src/librustdoc/test.rs | 2 +- src/test/run-make/execution-engine/test.rs | 2 -- 6 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/librustc/hir/map/mod.rs b/src/librustc/hir/map/mod.rs index 92f8c9249c842..f0eb580cfd57e 100644 --- a/src/librustc/hir/map/mod.rs +++ b/src/librustc/hir/map/mod.rs @@ -196,7 +196,7 @@ pub struct Map<'ast> { /// plain old integers. map: RefCell>>, - definitions: &'ast RefCell, + definitions: RefCell, } impl<'ast> Map<'ast> { @@ -790,7 +790,7 @@ pub fn collect_definitions<'ast>(krate: &'ast ast::Crate) -> Definitions { } pub fn map_crate<'ast>(forest: &'ast mut Forest, - definitions: &'ast RefCell) + definitions: Definitions) -> Map<'ast> { let mut collector = NodeCollector::root(&forest.krate); intravisit::walk_crate(&mut collector, &forest.krate); @@ -816,7 +816,7 @@ pub fn map_crate<'ast>(forest: &'ast mut Forest, forest: forest, dep_graph: forest.dep_graph.clone(), map: RefCell::new(map), - definitions: definitions, + definitions: RefCell::new(definitions), } } diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index 3f9fa0a23c2d8..a979410ca94de 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -165,7 +165,6 @@ pub fn compile_input(sess: &Session, syntax::ext::mtwt::clear_tables(); } - let defs = &RefCell::new(defs); let arenas = ty::CtxtArenas::new(); // Construct the HIR map diff --git a/src/librustc_driver/test.rs b/src/librustc_driver/test.rs index 59713c66afcb6..270376bda766e 100644 --- a/src/librustc_driver/test.rs +++ b/src/librustc_driver/test.rs @@ -29,7 +29,6 @@ use rustc_metadata::cstore::CStore; use rustc_metadata::creader::LocalCrateReader; use rustc::hir::map as hir_map; use rustc::session::{self, config}; -use std::cell::RefCell; use std::rc::Rc; use syntax::ast; use syntax::abi::Abi; @@ -129,7 +128,6 @@ fn test_env(source_string: &str, MakeGlobMap::No) }; - let defs = &RefCell::new(defs); let arenas = ty::CtxtArenas::new(); let ast_map = hir_map::map_crate(&mut hir_forest, defs); diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs index 857a1176f496a..e5919a4b35ff6 100644 --- a/src/librustdoc/core.rs +++ b/src/librustdoc/core.rs @@ -162,7 +162,6 @@ pub fn run_core(search_paths: SearchPaths, resolve::MakeGlobMap::No) }; - let defs = &RefCell::new(defs); let arenas = ty::CtxtArenas::new(); let hir_map = hir_map::map_crate(&mut hir_forest, defs); diff --git a/src/librustdoc/test.rs b/src/librustdoc/test.rs index fc548924e2964..c57452b6e2fc3 100644 --- a/src/librustdoc/test.rs +++ b/src/librustdoc/test.rs @@ -95,7 +95,7 @@ pub fn run(input: &str, .expect("phase_2_configure_and_expand aborted in rustdoc!"); let krate = driver::assign_node_ids(&sess, krate); let dep_graph = DepGraph::new(false); - let defs = &RefCell::new(hir_map::collect_definitions(&krate)); + let defs = hir_map::collect_definitions(&krate); let mut dummy_resolver = DummyResolver; let lcx = LoweringContext::new(&sess, Some(&krate), &mut dummy_resolver); diff --git a/src/test/run-make/execution-engine/test.rs b/src/test/run-make/execution-engine/test.rs index 0d10f31556644..a2893fa2f0dc0 100644 --- a/src/test/run-make/execution-engine/test.rs +++ b/src/test/run-make/execution-engine/test.rs @@ -20,7 +20,6 @@ extern crate rustc_metadata; extern crate rustc_resolve; #[macro_use] extern crate syntax; -use std::cell::RefCell; use std::ffi::{CStr, CString}; use std::mem::transmute; use std::path::PathBuf; @@ -246,7 +245,6 @@ fn compile_program(input: &str, sysroot: PathBuf) driver::lower_and_resolve(&sess, &id, &mut defs, &krate, dep_graph, MakeGlobMap::No) }; - let defs = &RefCell::new(defs); let arenas = ty::CtxtArenas::new(); let ast_map = ast_map::map_crate(&mut hir_forest, defs); From c0e321abcbc25c47e55a808628fb7e65b3fe0f98 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 10 May 2016 15:52:33 +0200 Subject: [PATCH 5/5] Make LocalCrateReader private to creader. --- src/librustc_driver/driver.rs | 5 ++-- src/librustc_driver/test.rs | 4 ++-- src/librustc_metadata/creader.rs | 27 +++++++++++++++------- src/librustdoc/core.rs | 4 ++-- src/test/run-make/execution-engine/test.rs | 4 ++-- 5 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index a979410ca94de..d2a5e12009ec4 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -28,7 +28,7 @@ use rustc_borrowck as borrowck; use rustc_incremental; use rustc_resolve as resolve; use rustc_metadata::macro_import; -use rustc_metadata::creader::LocalCrateReader; +use rustc_metadata::creader::read_local_crates; use rustc_metadata::cstore::CStore; use rustc_trans::back::link; use rustc_trans::back::write; @@ -148,8 +148,7 @@ pub fn compile_input(sess: &Session, time(sess.time_passes(), "external crate/lib resolution", - || LocalCrateReader::new(sess, &cstore, &defs, &expanded_crate, &id) - .read_crates(&dep_graph)); + || read_local_crates(sess, &cstore, &defs, &expanded_crate, &id, &dep_graph)); time(sess.time_passes(), "early lint checks", diff --git a/src/librustc_driver/test.rs b/src/librustc_driver/test.rs index 270376bda766e..5c62d236844ee 100644 --- a/src/librustc_driver/test.rs +++ b/src/librustc_driver/test.rs @@ -26,7 +26,7 @@ use rustc::traits::ProjectionMode; use rustc::ty::{self, Ty, TyCtxt, TypeFoldable}; use rustc::infer::{self, InferOk, InferResult, TypeOrigin}; use rustc_metadata::cstore::CStore; -use rustc_metadata::creader::LocalCrateReader; +use rustc_metadata::creader::read_local_crates; use rustc::hir::map as hir_map; use rustc::session::{self, config}; use std::rc::Rc; @@ -120,7 +120,7 @@ fn test_env(source_string: &str, let dep_graph = DepGraph::new(false); let krate = driver::assign_node_ids(&sess, krate); let mut defs = hir_map::collect_definitions(&krate); - LocalCrateReader::new(&sess, &cstore, &defs, &krate, "test_crate").read_crates(&dep_graph); + read_local_crates(&sess, &cstore, &defs, &krate, "test_crate", &dep_graph); let _ignore = dep_graph.in_ignore(); let (_, resolutions, mut hir_forest) = { diff --git a/src/librustc_metadata/creader.rs b/src/librustc_metadata/creader.rs index 62c208dbcb2a4..63c6af704bbfe 100644 --- a/src/librustc_metadata/creader.rs +++ b/src/librustc_metadata/creader.rs @@ -41,7 +41,7 @@ use syntax::parse::token::InternedString; use syntax::visit; use log; -pub struct LocalCrateReader<'a> { +struct LocalCrateReader<'a> { sess: &'a Session, cstore: &'a CStore, creader: CrateReader<'a>, @@ -841,12 +841,12 @@ impl<'a> CrateReader<'a> { } impl<'a> LocalCrateReader<'a> { - pub fn new(sess: &'a Session, - cstore: &'a CStore, - defs: &'a hir_map::Definitions, - krate: &'a ast::Crate, - local_crate_name: &str) - -> LocalCrateReader<'a> { + fn new(sess: &'a Session, + cstore: &'a CStore, + defs: &'a hir_map::Definitions, + krate: &'a ast::Crate, + local_crate_name: &str) + -> LocalCrateReader<'a> { LocalCrateReader { sess: sess, cstore: cstore, @@ -859,7 +859,7 @@ impl<'a> LocalCrateReader<'a> { // Traverses an AST, reading all the information about use'd crates and // extern libraries necessary for later resolving, typechecking, linking, // etc. - pub fn read_crates(&mut self, dep_graph: &DepGraph) { + fn read_crates(&mut self, dep_graph: &DepGraph) { let _task = dep_graph.in_task(DepNode::CrateReader); self.process_crate(self.krate); @@ -981,6 +981,17 @@ impl<'a> LocalCrateReader<'a> { } } +/// Traverses an AST, reading all the information about use'd crates and extern +/// libraries necessary for later resolving, typechecking, linking, etc. +pub fn read_local_crates(sess: & Session, + cstore: & CStore, + defs: & hir_map::Definitions, + krate: & ast::Crate, + local_crate_name: &str, + dep_graph: &DepGraph) { + LocalCrateReader::new(sess, cstore, defs, krate, local_crate_name).read_crates(dep_graph) +} + /// Imports the codemap from an external crate into the codemap of the crate /// currently being compiled (the "local crate"). /// diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs index e5919a4b35ff6..67eb268af08f6 100644 --- a/src/librustdoc/core.rs +++ b/src/librustdoc/core.rs @@ -21,7 +21,7 @@ use rustc::lint; use rustc_trans::back::link; use rustc_resolve as resolve; use rustc_metadata::cstore::CStore; -use rustc_metadata::creader::LocalCrateReader; +use rustc_metadata::creader::read_local_crates; use syntax::{ast, codemap, errors}; use syntax::errors::emitter::ColorConfig; @@ -154,7 +154,7 @@ pub fn run_core(search_paths: SearchPaths, let dep_graph = DepGraph::new(false); let mut defs = hir_map::collect_definitions(&krate); - LocalCrateReader::new(&sess, &cstore, &defs, &krate, &name).read_crates(&dep_graph); + read_local_crates(&sess, &cstore, &defs, &krate, &name, &dep_graph); // Lower ast -> hir and resolve. let (analysis, resolutions, mut hir_forest) = { diff --git a/src/test/run-make/execution-engine/test.rs b/src/test/run-make/execution-engine/test.rs index a2893fa2f0dc0..0ad113b8d8b38 100644 --- a/src/test/run-make/execution-engine/test.rs +++ b/src/test/run-make/execution-engine/test.rs @@ -34,7 +34,7 @@ use rustc::session::config::{self, basic_options, build_configuration, Input, Op use rustc::session::build_session; use rustc_driver::{driver, abort_on_err}; use rustc_resolve::MakeGlobMap; -use rustc_metadata::creader::LocalCrateReader; +use rustc_metadata::creader::read_local_crates; use rustc_metadata::cstore::CStore; use libc::c_void; @@ -240,7 +240,7 @@ fn compile_program(input: &str, sysroot: PathBuf) let dep_graph = DepGraph::new(sess.opts.build_dep_graph()); let krate = driver::assign_node_ids(&sess, krate); let mut defs = ast_map::collect_definitions(&krate); - LocalCrateReader::new(&sess, &cstore, &defs, &krate, &id).read_crates(&dep_graph); + read_local_crates(&sess, &cstore, &defs, &krate, &id, &dep_graph); let (analysis, resolutions, mut hir_forest) = { driver::lower_and_resolve(&sess, &id, &mut defs, &krate, dep_graph, MakeGlobMap::No) };