diff options
| author | bors <bors@rust-lang.org> | 2015-10-09 08:53:45 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-10-09 08:53:45 +0000 |
| commit | c14609035d1780d4a8a3ca7b4fdf93046299ab4a (patch) | |
| tree | e2cd7e864e6d87be5ef3f9c044d0d2a510c6c96e /src/librustc/middle/astencode.rs | |
| parent | 7cea9a714130b7b85caf91c2a1d126539f41c383 (diff) | |
| parent | a62a529eea3e00b3ce9e659daa4235add2cb8551 (diff) | |
| download | rust-c14609035d1780d4a8a3ca7b4fdf93046299ab4a.tar.gz rust-c14609035d1780d4a8a3ca7b4fdf93046299ab4a.zip | |
Auto merge of #28857 - nrc:lowering, r=nikomatsakis
r? @nikomatsakis
Diffstat (limited to 'src/librustc/middle/astencode.rs')
| -rw-r--r-- | src/librustc/middle/astencode.rs | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/src/librustc/middle/astencode.rs b/src/librustc/middle/astencode.rs index 160be3fa7ff..3b4cb56ec74 100644 --- a/src/librustc/middle/astencode.rs +++ b/src/librustc/middle/astencode.rs @@ -36,6 +36,7 @@ use middle::subst; use middle::ty::{self, Ty}; use syntax::{ast, ast_util, codemap}; +use syntax::ast::NodeIdAssigner; use syntax::codemap::Span; use syntax::ptr::P; @@ -53,8 +54,9 @@ use serialize::EncoderHelpers; #[cfg(test)] use std::io::Cursor; #[cfg(test)] use syntax::parse; +#[cfg(test)] use syntax::ast::NodeId; #[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> { tcx: &'a ty::ctxt<'tcx>, @@ -1377,6 +1379,22 @@ impl FakeExtCtxt for parse::ParseSess { } #[cfg(test)] +struct FakeNodeIdAssigner; + +#[cfg(test)] +// It should go without saying 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)] fn mk_ctxt() -> parse::ParseSess { parse::ParseSess::new() } @@ -1394,7 +1412,9 @@ fn roundtrip(in_item: P<hir::Item>) { #[test] fn test_basic() { 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() {} ).unwrap())); } @@ -1402,7 +1422,9 @@ fn test_basic() { #[test] fn test_smalltalk() { 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. ).unwrap())); } @@ -1410,7 +1432,9 @@ fn test_smalltalk() { #[test] fn test_more() { 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 { let z = x + y; return z; @@ -1427,10 +1451,12 @@ fn test_simplification() { return alist {eq_fn: eq_int, data: Vec::new()}; } ).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_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> { return alist {eq_fn: eq_int, data: Vec::new()}; } |
