#![feature(rustc_private)]
extern crate aster;
extern crate syntax;
use syntax::print::pprust;
use aster::AstBuilder;
#[test]
fn test() {
let builder = AstBuilder::new();
let path = builder.path().id("isize").build();
println!("path: {}", pprust::path_to_string(&path));
let path = builder.path()
.segment("isize").build()
.build();
println!("path: {}", pprust::path_to_string(&path));
let path = builder.path().global()
.id("std")
.id("thread")
.id("Thread")
.build();
println!("path: {}", pprust::path_to_string(&path));
let ty = builder.ty().isize();
println!("ty: {}", pprust::ty_to_string(&*ty));
let ty = builder.ty().option().isize();
println!("ty: {}", pprust::ty_to_string(&*ty));
let ty = builder.ty().result().isize().isize();
println!("ty: {}", pprust::ty_to_string(&*ty));
let ty = builder.ty().tuple().build();
println!("ty: {}", pprust::ty_to_string(&*ty));
let ty = builder.ty()
.tuple()
.ty().isize()
.ty().tuple()
.ty().unit()
.ty().isize()
.build()
.build();
println!("ty: {}", pprust::ty_to_string(&*ty));
let expr = builder.expr().i8(5);
println!("expr: {}", pprust::expr_to_string(&*expr));
let expr = builder.expr().isize(5);
println!("expr: {}", pprust::expr_to_string(&*expr));
let expr = builder.expr().add().i8(1).i8(2);
println!("expr: {}", pprust::expr_to_string(&*expr));
let expr = builder.expr()
.tuple()
.expr().i8(1)
.expr().tuple()
.expr().unit()
.expr().isize(2)
.build()
.build();
println!("expr: {}", pprust::expr_to_string(&*expr));
let stmt = builder.stmt().let_().id("x").build();
println!("stmt: {}", pprust::stmt_to_string(&*stmt));
let stmt = builder.stmt().let_()
.id("x")
.ty().i8()
.build();
println!("stmt: {}", pprust::stmt_to_string(&*stmt));
let stmt = builder.stmt().let_()
.id("x").expr().i8(0);
println!("stmt: {}", pprust::stmt_to_string(&*stmt));
let stmt = builder.stmt().let_()
.id("x")
.ty().i8()
.expr().i8(0);
println!("stmt: {}", pprust::stmt_to_string(&*stmt));
let stmt = builder.stmt().let_()
.tuple()
.pat().ref_id("x")
.pat().id("x")
.build()
.expr().tuple()
.expr().u8(0)
.expr().u16(1)
.build();
println!("stmt: {}", pprust::stmt_to_string(&*stmt));
let fn_ = builder.item().fn_("foo")
.output().isize()
.block()
.stmt().let_id("x").isize(1)
.stmt().let_id("y").isize(2)
.expr().add().id("x").id("y");
println!("fn: {}", pprust::item_to_string(&*fn_));
let fn_ = builder.item().fn_("bar")
.output().isize()
.generics()
.lifetime("'a").build()
.lifetime("'b").bound("'a").build()
.ty_param("T").build()
.build()
.block()
.stmt().let_id("x").isize(1)
.stmt().let_id("y").isize(2)
.expr().add().id("x").id("y");
println!("fn: {}", pprust::item_to_string(&*fn_));
}