Auto merge of #30558 - jonas-schievink:delete-ast, r=nrc

Or more specifically, after running early lints.

Closes #28142
This commit is contained in:
bors 2015-12-25 22:32:08 +00:00
commit 3150dddb0f
2 changed files with 33 additions and 25 deletions

View File

@ -622,6 +622,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
"force nonzeroing move optimization on"),
keep_mtwt_tables: bool = (false, parse_bool,
"don't clear the resolution tables after analysis"),
keep_ast: bool = (false, parse_bool,
"keep the AST after lowering it to HIR"),
}
pub fn default_lib_output() -> CrateType {

View File

@ -121,7 +121,7 @@ pub fn compile_input(sess: Session,
}
let arenas = ty::CtxtArenas::new();
let ast_map = make_map(&sess, &mut hir_forest);
let hir_map = make_map(&sess, &mut hir_forest);
write_out_deps(&sess, &outputs, &id);
@ -130,9 +130,9 @@ pub fn compile_input(sess: Session,
CompileState::state_after_write_deps(input,
&sess,
outdir,
&ast_map,
&hir_map,
&expanded_crate,
&ast_map.krate(),
&hir_map.krate(),
&id[..],
&lcx));
@ -144,9 +144,17 @@ pub fn compile_input(sess: Session,
"early lint checks",
|| lint::check_ast_crate(&sess, &expanded_crate));
let opt_crate = if sess.opts.debugging_opts.keep_ast ||
sess.opts.debugging_opts.save_analysis {
Some(&expanded_crate)
} else {
drop(expanded_crate);
None
};
phase_3_run_analysis_passes(&sess,
&cstore,
ast_map,
hir_map,
&arenas,
&id,
control.make_glob_map,
@ -157,7 +165,7 @@ pub fn compile_input(sess: Session,
CompileState::state_after_analysis(input,
&tcx.sess,
outdir,
&expanded_crate,
opt_crate,
tcx.map.krate(),
&analysis,
&mir_map,
@ -341,7 +349,7 @@ impl<'a, 'ast, 'tcx> CompileState<'a, 'ast, 'tcx> {
fn state_after_write_deps(input: &'a Input,
session: &'a Session,
out_dir: &'a Option<PathBuf>,
ast_map: &'a hir_map::Map<'ast>,
hir_map: &'a hir_map::Map<'ast>,
krate: &'a ast::Crate,
hir_crate: &'a hir::Crate,
crate_name: &'a str,
@ -349,7 +357,7 @@ impl<'a, 'ast, 'tcx> CompileState<'a, 'ast, 'tcx> {
-> CompileState<'a, 'ast, 'tcx> {
CompileState {
crate_name: Some(crate_name),
ast_map: Some(ast_map),
ast_map: Some(hir_map),
krate: Some(krate),
hir_crate: Some(hir_crate),
lcx: Some(lcx),
@ -360,7 +368,7 @@ impl<'a, 'ast, 'tcx> CompileState<'a, 'ast, 'tcx> {
fn state_after_analysis(input: &'a Input,
session: &'a Session,
out_dir: &'a Option<PathBuf>,
krate: &'a ast::Crate,
krate: Option<&'a ast::Crate>,
hir_crate: &'a hir::Crate,
analysis: &'a ty::CrateAnalysis,
mir_map: &'a MirMap<'tcx>,
@ -372,7 +380,7 @@ impl<'a, 'ast, 'tcx> CompileState<'a, 'ast, 'tcx> {
analysis: Some(analysis),
mir_map: Some(mir_map),
tcx: Some(tcx),
krate: Some(krate),
krate: krate,
hir_crate: Some(hir_crate),
lcx: Some(lcx),
crate_name: Some(crate_name),
@ -670,14 +678,12 @@ pub fn assign_node_ids(sess: &Session, krate: ast::Crate) -> ast::Crate {
}
pub fn make_map<'ast>(sess: &Session,
forest: &'ast mut front::map::Forest)
-> front::map::Map<'ast> {
// Construct the 'ast'-map
let map = time(sess.time_passes(),
"indexing hir",
move || front::map::map_crate(forest));
map
forest: &'ast mut hir_map::Forest)
-> hir_map::Map<'ast> {
// Construct the HIR map
time(sess.time_passes(),
"indexing hir",
move || hir_map::map_crate(forest))
}
/// Run the resolution, typechecking, region checking and other
@ -685,7 +691,7 @@ pub fn make_map<'ast>(sess: &Session,
/// structures carrying the results of the analysis.
pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
cstore: &CStore,
ast_map: front::map::Map<'tcx>,
hir_map: hir_map::Map<'tcx>,
arenas: &'tcx ty::CtxtArenas<'tcx>,
name: &str,
make_glob_map: resolve::MakeGlobMap,
@ -694,15 +700,15 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
where F: for<'a> FnOnce(&'a ty::ctxt<'tcx>, MirMap<'tcx>, ty::CrateAnalysis) -> R
{
let time_passes = sess.time_passes();
let krate = ast_map.krate();
let krate = hir_map.krate();
time(time_passes,
"external crate/lib resolution",
|| LocalCrateReader::new(sess, cstore, &ast_map).read_crates(krate));
|| LocalCrateReader::new(sess, cstore, &hir_map).read_crates(krate));
let lang_items = time(time_passes,
"language item collection",
|| middle::lang_items::collect_language_items(&sess, &ast_map));
|| middle::lang_items::collect_language_items(&sess, &hir_map));
let resolve::CrateMap {
def_map,
@ -713,7 +719,7 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
glob_map,
} = time(time_passes,
"resolution",
|| resolve::resolve_crate(sess, &ast_map, make_glob_map));
|| resolve::resolve_crate(sess, &hir_map, make_glob_map));
let named_region_map = time(time_passes,
"lifetime resolution",
@ -721,7 +727,7 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
time(time_passes,
"looking for entry point",
|| middle::entry::find_entry_point(sess, &ast_map));
|| middle::entry::find_entry_point(sess, &hir_map));
sess.plugin_registrar_fn.set(time(time_passes, "looking for plugin registrar", || {
plugin::build::find_plugin_registrar(sess.diagnostic(), krate)
@ -737,13 +743,13 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
time(time_passes,
"static item recursion checking",
|| middle::check_static_recursion::check_crate(sess, krate, &def_map.borrow(), &ast_map));
|| middle::check_static_recursion::check_crate(sess, krate, &def_map.borrow(), &hir_map));
ty::ctxt::create_and_enter(sess,
arenas,
def_map,
named_region_map,
ast_map,
hir_map,
freevars,
region_map,
lang_items,