Misc fixups
This commit is contained in:
parent
3d81f78544
commit
2b4f28e531
|
@ -54,8 +54,9 @@ use serialize::EncoderHelpers;
|
||||||
|
|
||||||
#[cfg(test)] use std::io::Cursor;
|
#[cfg(test)] use std::io::Cursor;
|
||||||
#[cfg(test)] use syntax::parse;
|
#[cfg(test)] use syntax::parse;
|
||||||
|
#[cfg(test)] use syntax::ast::NodeId;
|
||||||
#[cfg(test)] use rustc_front::print::pprust;
|
#[cfg(test)] use rustc_front::print::pprust;
|
||||||
#[cfg(test)] use rustc_front::lowering::lower_item;
|
#[cfg(test)] use rustc_front::lowering::{lower_item, LoweringContext};
|
||||||
|
|
||||||
struct DecodeContext<'a, 'b, 'tcx: 'a> {
|
struct DecodeContext<'a, 'b, 'tcx: 'a> {
|
||||||
tcx: &'a ty::ctxt<'tcx>,
|
tcx: &'a ty::ctxt<'tcx>,
|
||||||
|
@ -1374,6 +1375,22 @@ impl FakeExtCtxt for parse::ParseSess {
|
||||||
fn parse_sess(&self) -> &parse::ParseSess { self }
|
fn parse_sess(&self) -> &parse::ParseSess { self }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
struct FakeNodeIdAssigner;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
// It should go without sayingt that this may give unexpected results. Avoid
|
||||||
|
// lowering anything which needs new nodes.
|
||||||
|
impl NodeIdAssigner for FakeNodeIdAssigner {
|
||||||
|
fn next_node_id(&self) -> NodeId {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
fn peek_node_id(&self) -> NodeId {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
fn mk_ctxt() -> parse::ParseSess {
|
fn mk_ctxt() -> parse::ParseSess {
|
||||||
parse::ParseSess::new()
|
parse::ParseSess::new()
|
||||||
|
@ -1392,7 +1409,9 @@ fn roundtrip(in_item: P<hir::Item>) {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_basic() {
|
fn test_basic() {
|
||||||
let cx = mk_ctxt();
|
let cx = mk_ctxt();
|
||||||
roundtrip(lower_item("e_item!(&cx,
|
let fnia = FakeNodeIdAssigner;
|
||||||
|
let lcx = LoweringContext::new(&fnia, None);
|
||||||
|
roundtrip(lower_item(&lcx, "e_item!(&cx,
|
||||||
fn foo() {}
|
fn foo() {}
|
||||||
).unwrap()));
|
).unwrap()));
|
||||||
}
|
}
|
||||||
|
@ -1400,7 +1419,9 @@ fn test_basic() {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_smalltalk() {
|
fn test_smalltalk() {
|
||||||
let cx = mk_ctxt();
|
let cx = mk_ctxt();
|
||||||
roundtrip(lower_item("e_item!(&cx,
|
let fnia = FakeNodeIdAssigner;
|
||||||
|
let lcx = LoweringContext::new(&fnia, None);
|
||||||
|
roundtrip(lower_item(&lcx, "e_item!(&cx,
|
||||||
fn foo() -> isize { 3 + 4 } // first smalltalk program ever executed.
|
fn foo() -> isize { 3 + 4 } // first smalltalk program ever executed.
|
||||||
).unwrap()));
|
).unwrap()));
|
||||||
}
|
}
|
||||||
|
@ -1408,7 +1429,9 @@ fn test_smalltalk() {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_more() {
|
fn test_more() {
|
||||||
let cx = mk_ctxt();
|
let cx = mk_ctxt();
|
||||||
roundtrip(lower_item("e_item!(&cx,
|
let fnia = FakeNodeIdAssigner;
|
||||||
|
let lcx = LoweringContext::new(&fnia, None);
|
||||||
|
roundtrip(lower_item(&lcx, "e_item!(&cx,
|
||||||
fn foo(x: usize, y: usize) -> usize {
|
fn foo(x: usize, y: usize) -> usize {
|
||||||
let z = x + y;
|
let z = x + y;
|
||||||
return z;
|
return z;
|
||||||
|
@ -1425,10 +1448,12 @@ fn test_simplification() {
|
||||||
return alist {eq_fn: eq_int, data: Vec::new()};
|
return alist {eq_fn: eq_int, data: Vec::new()};
|
||||||
}
|
}
|
||||||
).unwrap();
|
).unwrap();
|
||||||
let hir_item = lower_item(&item);
|
let fnia = FakeNodeIdAssigner;
|
||||||
|
let lcx = LoweringContext::new(&fnia, None);
|
||||||
|
let hir_item = lower_item(&lcx, &item);
|
||||||
let item_in = InlinedItemRef::Item(&hir_item);
|
let item_in = InlinedItemRef::Item(&hir_item);
|
||||||
let item_out = simplify_ast(item_in);
|
let item_out = simplify_ast(item_in);
|
||||||
let item_exp = InlinedItem::Item(lower_item("e_item!(&cx,
|
let item_exp = InlinedItem::Item(lower_item(&lcx, "e_item!(&cx,
|
||||||
fn new_int_alist<B>() -> alist<isize, B> {
|
fn new_int_alist<B>() -> alist<isize, B> {
|
||||||
return alist {eq_fn: eq_int, data: Vec::new()};
|
return alist {eq_fn: eq_int, data: Vec::new()};
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,7 +112,7 @@ pub fn compile_input(sess: Session,
|
||||||
|
|
||||||
let expanded_crate = assign_node_ids(&sess, expanded_crate);
|
let expanded_crate = assign_node_ids(&sess, expanded_crate);
|
||||||
// Lower ast -> hir.
|
// Lower ast -> hir.
|
||||||
let lcx = LoweringContext::new(&sess, &expanded_crate);
|
let lcx = LoweringContext::new(&sess, Some(&expanded_crate));
|
||||||
let mut hir_forest = time(sess.time_passes(),
|
let mut hir_forest = time(sess.time_passes(),
|
||||||
"lowering ast -> hir",
|
"lowering ast -> hir",
|
||||||
|| hir_map::Forest::new(lower_crate(&lcx, &expanded_crate)));
|
|| hir_map::Forest::new(lower_crate(&lcx, &expanded_crate)));
|
||||||
|
|
|
@ -670,7 +670,7 @@ pub fn pretty_print_input(sess: Session,
|
||||||
// There is some twisted, god-forsaken tangle of lifetimes here which makes
|
// There is some twisted, god-forsaken tangle of lifetimes here which makes
|
||||||
// the ordering of stuff super-finicky.
|
// the ordering of stuff super-finicky.
|
||||||
let mut hir_forest;
|
let mut hir_forest;
|
||||||
let lcx = LoweringContext::new(&sess, &krate);
|
let lcx = LoweringContext::new(&sess, Some(&krate));
|
||||||
let arenas = ty::CtxtArenas::new();
|
let arenas = ty::CtxtArenas::new();
|
||||||
let ast_map = if compute_ast_map {
|
let ast_map = if compute_ast_map {
|
||||||
hir_forest = hir_map::Forest::new(lower_crate(&lcx, &krate));
|
hir_forest = hir_map::Forest::new(lower_crate(&lcx, &krate));
|
||||||
|
|
|
@ -38,7 +38,7 @@ use syntax::diagnostic::{Level, RenderSpan, Bug, Fatal, Error, Warning, Note, He
|
||||||
use syntax::parse::token;
|
use syntax::parse::token;
|
||||||
use syntax::feature_gate::UnstableFeatures;
|
use syntax::feature_gate::UnstableFeatures;
|
||||||
|
|
||||||
use rustc_front::lowering::lower_crate;
|
use rustc_front::lowering::{lower_crate, LoweringContext};
|
||||||
use rustc_front::hir;
|
use rustc_front::hir;
|
||||||
|
|
||||||
struct Env<'a, 'tcx: 'a> {
|
struct Env<'a, 'tcx: 'a> {
|
||||||
|
@ -124,7 +124,8 @@ fn test_env<F>(source_string: &str,
|
||||||
.expect("phase 2 aborted");
|
.expect("phase 2 aborted");
|
||||||
|
|
||||||
let krate = driver::assign_node_ids(&sess, krate);
|
let krate = driver::assign_node_ids(&sess, krate);
|
||||||
let mut hir_forest = hir_map::Forest::new(lower_crate(&krate));
|
let lcx = LoweringContext::new(&sess, Some(&krate));
|
||||||
|
let mut hir_forest = hir_map::Forest::new(lower_crate(&lcx, &krate));
|
||||||
let arenas = ty::CtxtArenas::new();
|
let arenas = ty::CtxtArenas::new();
|
||||||
let ast_map = driver::make_map(&sess, &mut hir_forest);
|
let ast_map = driver::make_map(&sess, &mut hir_forest);
|
||||||
let krate = ast_map.krate();
|
let krate = ast_map.krate();
|
||||||
|
@ -135,7 +136,7 @@ fn test_env<F>(source_string: &str,
|
||||||
resolve::resolve_crate(&sess, &ast_map, resolve::MakeGlobMap::No);
|
resolve::resolve_crate(&sess, &ast_map, resolve::MakeGlobMap::No);
|
||||||
let named_region_map = resolve_lifetime::krate(&sess, krate, &def_map);
|
let named_region_map = resolve_lifetime::krate(&sess, krate, &def_map);
|
||||||
let region_map = region::resolve_crate(&sess, krate);
|
let region_map = region::resolve_crate(&sess, krate);
|
||||||
ty::ctxt::create_and_enter(sess,
|
ty::ctxt::create_and_enter(&sess,
|
||||||
&arenas,
|
&arenas,
|
||||||
def_map,
|
def_map,
|
||||||
named_region_map,
|
named_region_map,
|
||||||
|
|
|
@ -80,14 +80,16 @@ pub struct LoweringContext<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, 'hir> LoweringContext<'a> {
|
impl<'a, 'hir> LoweringContext<'a> {
|
||||||
pub fn new(id_assigner: &'a NodeIdAssigner, c: &Crate) -> LoweringContext<'a> {
|
pub fn new(id_assigner: &'a NodeIdAssigner, c: Option<&Crate>) -> LoweringContext<'a> {
|
||||||
let crate_root = if std_inject::no_core(c) {
|
let crate_root = c.and_then(|c| {
|
||||||
|
if std_inject::no_core(c) {
|
||||||
None
|
None
|
||||||
} else if std_inject::no_std(c) {
|
} else if std_inject::no_std(c) {
|
||||||
Some("core")
|
Some("core")
|
||||||
} else {
|
} else {
|
||||||
Some("std")
|
Some("std")
|
||||||
};
|
}
|
||||||
|
});
|
||||||
|
|
||||||
LoweringContext {
|
LoweringContext {
|
||||||
crate_root: crate_root,
|
crate_root: crate_root,
|
||||||
|
|
|
@ -38,7 +38,6 @@ use std::cell::RefCell;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use syntax::codemap::Span;
|
use syntax::codemap::Span;
|
||||||
use syntax::parse::token;
|
use syntax::parse::token;
|
||||||
use syntax::ast::NodeIdAssigner;
|
|
||||||
use util::nodemap::{DefIdMap, FnvHashMap};
|
use util::nodemap::{DefIdMap, FnvHashMap};
|
||||||
use rustc::front::map as hir_map;
|
use rustc::front::map as hir_map;
|
||||||
use rustc::front::map::NodeItem;
|
use rustc::front::map::NodeItem;
|
||||||
|
|
|
@ -135,7 +135,7 @@ pub fn run_core(search_paths: SearchPaths, cfgs: Vec<String>, externs: Externs,
|
||||||
|
|
||||||
let krate = driver::assign_node_ids(&sess, krate);
|
let krate = driver::assign_node_ids(&sess, krate);
|
||||||
// Lower ast -> hir.
|
// Lower ast -> hir.
|
||||||
let lcx = LoweringContext::new(&sess, &krate);
|
let lcx = LoweringContext::new(&sess, Some(&krate));
|
||||||
let mut hir_forest = hir_map::Forest::new(lower_crate(&lcx, &krate));
|
let mut hir_forest = hir_map::Forest::new(lower_crate(&lcx, &krate));
|
||||||
let arenas = ty::CtxtArenas::new();
|
let arenas = ty::CtxtArenas::new();
|
||||||
let hir_map = driver::make_map(&sess, &mut hir_forest);
|
let hir_map = driver::make_map(&sess, &mut hir_forest);
|
||||||
|
|
|
@ -83,7 +83,7 @@ pub fn run(input: &str,
|
||||||
"rustdoc-test", None)
|
"rustdoc-test", None)
|
||||||
.expect("phase_2_configure_and_expand aborted in rustdoc!");
|
.expect("phase_2_configure_and_expand aborted in rustdoc!");
|
||||||
let krate = driver::assign_node_ids(&sess, krate);
|
let krate = driver::assign_node_ids(&sess, krate);
|
||||||
let lcx = LoweringContext::new(&sess, &krate);
|
let lcx = LoweringContext::new(&sess, Some(&krate));
|
||||||
let krate = lower_crate(&lcx, &krate);
|
let krate = lower_crate(&lcx, &krate);
|
||||||
|
|
||||||
let opts = scrape_test_config(&krate);
|
let opts = scrape_test_config(&krate);
|
||||||
|
|
|
@ -31,7 +31,7 @@ use rustc::middle::ty;
|
||||||
use rustc::session::config::{self, basic_options, build_configuration, Input, Options};
|
use rustc::session::config::{self, basic_options, build_configuration, Input, Options};
|
||||||
use rustc::session::build_session;
|
use rustc::session::build_session;
|
||||||
use rustc_driver::driver;
|
use rustc_driver::driver;
|
||||||
use rustc_front::lowering::lower_crate;
|
use rustc_front::lowering::{lower_crate, LoweringContext};
|
||||||
use rustc_resolve::MakeGlobMap;
|
use rustc_resolve::MakeGlobMap;
|
||||||
use libc::c_void;
|
use libc::c_void;
|
||||||
|
|
||||||
|
@ -223,12 +223,13 @@ fn compile_program(input: &str, sysroot: PathBuf)
|
||||||
.expect("phase_2 returned `None`");
|
.expect("phase_2 returned `None`");
|
||||||
|
|
||||||
let krate = driver::assign_node_ids(&sess, krate);
|
let krate = driver::assign_node_ids(&sess, krate);
|
||||||
let mut hir_forest = ast_map::Forest::new(lower_crate(&krate));
|
let lcx = LoweringContext::new(&sess, Some(&krate));
|
||||||
|
let mut hir_forest = ast_map::Forest::new(lower_crate(&lcx, &krate));
|
||||||
let arenas = ty::CtxtArenas::new();
|
let arenas = ty::CtxtArenas::new();
|
||||||
let ast_map = driver::make_map(&sess, &mut hir_forest);
|
let ast_map = driver::make_map(&sess, &mut hir_forest);
|
||||||
|
|
||||||
driver::phase_3_run_analysis_passes(
|
driver::phase_3_run_analysis_passes(
|
||||||
sess, ast_map, &arenas, id, MakeGlobMap::No, |tcx, analysis| {
|
&sess, ast_map, &arenas, id, MakeGlobMap::No, |tcx, analysis| {
|
||||||
|
|
||||||
let trans = driver::phase_4_translate_to_llvm(tcx, analysis);
|
let trans = driver::phase_4_translate_to_llvm(tcx, analysis);
|
||||||
|
|
||||||
|
@ -246,7 +247,7 @@ fn compile_program(input: &str, sysroot: PathBuf)
|
||||||
let modp = llmod as usize;
|
let modp = llmod as usize;
|
||||||
|
|
||||||
(modp, deps)
|
(modp, deps)
|
||||||
}).1
|
})
|
||||||
}).unwrap();
|
}).unwrap();
|
||||||
|
|
||||||
match handle.join() {
|
match handle.join() {
|
||||||
|
|
Loading…
Reference in New Issue