1
Fork 0

Refactor away duplicate method ecx.block_all()

This commit is contained in:
Jeffrey Seyfried 2016-06-23 23:26:32 +00:00
parent 94479ad81f
commit 060a84d1f7
4 changed files with 7 additions and 12 deletions

View file

@ -100,7 +100,6 @@ pub trait AstBuilder {
// blocks // blocks
fn block(&self, span: Span, stmts: Vec<ast::Stmt>) -> P<ast::Block>; fn block(&self, span: Span, stmts: Vec<ast::Stmt>) -> P<ast::Block>;
fn block_expr(&self, expr: P<ast::Expr>) -> P<ast::Block>; fn block_expr(&self, expr: P<ast::Expr>) -> P<ast::Block>;
fn block_all(&self, span: Span, stmts: Vec<ast::Stmt>) -> P<ast::Block>;
// expressions // expressions
fn expr(&self, span: Span, node: ast::ExprKind) -> P<ast::Expr>; fn expr(&self, span: Span, node: ast::ExprKind) -> P<ast::Expr>;
@ -553,22 +552,18 @@ impl<'a> AstBuilder for ExtCtxt<'a> {
P(respan(sp, ast::StmtKind::Decl(P(decl), ast::DUMMY_NODE_ID))) P(respan(sp, ast::StmtKind::Decl(P(decl), ast::DUMMY_NODE_ID)))
} }
fn block(&self, span: Span, stmts: Vec<ast::Stmt>) -> P<ast::Block> {
self.block_all(span, stmts)
}
fn stmt_item(&self, sp: Span, item: P<ast::Item>) -> ast::Stmt { fn stmt_item(&self, sp: Span, item: P<ast::Item>) -> ast::Stmt {
let decl = respan(sp, ast::DeclKind::Item(item)); let decl = respan(sp, ast::DeclKind::Item(item));
respan(sp, ast::StmtKind::Decl(P(decl), ast::DUMMY_NODE_ID)) respan(sp, ast::StmtKind::Decl(P(decl), ast::DUMMY_NODE_ID))
} }
fn block_expr(&self, expr: P<ast::Expr>) -> P<ast::Block> { fn block_expr(&self, expr: P<ast::Expr>) -> P<ast::Block> {
self.block_all(expr.span, vec![Spanned { self.block(expr.span, vec![Spanned {
span: expr.span, span: expr.span,
node: ast::StmtKind::Expr(expr, ast::DUMMY_NODE_ID), node: ast::StmtKind::Expr(expr, ast::DUMMY_NODE_ID),
}]) }])
} }
fn block_all(&self, span: Span, stmts: Vec<ast::Stmt>) -> P<ast::Block> { fn block(&self, span: Span, stmts: Vec<ast::Stmt>) -> P<ast::Block> {
P(ast::Block { P(ast::Block {
stmts: stmts, stmts: stmts,
id: ast::DUMMY_NODE_ID, id: ast::DUMMY_NODE_ID,

View file

@ -513,7 +513,7 @@ pub fn expand_quote_matcher(cx: &mut ExtCtxt,
let mut vector = mk_stmts_let(cx, sp); let mut vector = mk_stmts_let(cx, sp);
vector.extend(statements_mk_tts(cx, &tts[..], true)); vector.extend(statements_mk_tts(cx, &tts[..], true));
vector.push(cx.stmt_expr(cx.expr_ident(sp, id_ext("tt")))); vector.push(cx.stmt_expr(cx.expr_ident(sp, id_ext("tt"))));
let block = cx.expr_block(cx.block_all(sp, vector)); let block = cx.expr_block(cx.block(sp, vector));
let expanded = expand_wrapper(cx, sp, cx_expr, block, &[&["syntax", "ext", "quote", "rt"]]); let expanded = expand_wrapper(cx, sp, cx_expr, block, &[&["syntax", "ext", "quote", "rt"]]);
base::MacEager::expr(expanded) base::MacEager::expr(expanded)
@ -884,7 +884,7 @@ fn expand_tts(cx: &ExtCtxt, sp: Span, tts: &[TokenTree])
let mut vector = mk_stmts_let(cx, sp); let mut vector = mk_stmts_let(cx, sp);
vector.extend(statements_mk_tts(cx, &tts[..], false)); vector.extend(statements_mk_tts(cx, &tts[..], false));
vector.push(cx.stmt_expr(cx.expr_ident(sp, id_ext("tt")))); vector.push(cx.stmt_expr(cx.expr_ident(sp, id_ext("tt"))));
let block = cx.expr_block(cx.block_all(sp, vector)); let block = cx.expr_block(cx.block(sp, vector));
(cx_expr, block) (cx_expr, block)
} }
@ -905,7 +905,7 @@ fn expand_wrapper(cx: &ExtCtxt,
}).chain(Some(stmt_let_ext_cx)).collect::<Vec<_>>(); }).chain(Some(stmt_let_ext_cx)).collect::<Vec<_>>();
stmts.push(cx.stmt_expr(expr)); stmts.push(cx.stmt_expr(expr));
cx.expr_block(cx.block_all(sp, stmts)) cx.expr_block(cx.block(sp, stmts))
} }
fn expand_parse_call(cx: &ExtCtxt, fn expand_parse_call(cx: &ExtCtxt,

View file

@ -474,7 +474,7 @@ fn mk_main(cx: &mut TestCtxt) -> P<ast::Item> {
let main_attr = ecx.attribute(sp, main_meta); let main_attr = ecx.attribute(sp, main_meta);
// pub fn main() { ... } // pub fn main() { ... }
let main_ret_ty = ecx.ty(sp, ast::TyKind::Tup(vec![])); let main_ret_ty = ecx.ty(sp, ast::TyKind::Tup(vec![]));
let main_body = ecx.block_all(sp, vec![call_test_main]); let main_body = ecx.block(sp, vec![call_test_main]);
let main = ast::ItemKind::Fn(ecx.fn_decl(vec![], main_ret_ty), let main = ast::ItemKind::Fn(ecx.fn_decl(vec![], main_ret_ty),
ast::Unsafety::Normal, ast::Unsafety::Normal,
ast::Constness::NotConst, ast::Constness::NotConst,

View file

@ -1333,7 +1333,7 @@ impl<'a> MethodDef<'a> {
let all_match = cx.expr_match(sp, match_arg, match_arms); let all_match = cx.expr_match(sp, match_arg, match_arms);
let arm_expr = cx.expr_if(sp, discriminant_test, all_match, Some(arm_expr)); let arm_expr = cx.expr_if(sp, discriminant_test, all_match, Some(arm_expr));
index_let_stmts.push(cx.stmt_expr(arm_expr)); index_let_stmts.push(cx.stmt_expr(arm_expr));
cx.expr_block(cx.block_all(sp, index_let_stmts)) cx.expr_block(cx.block(sp, index_let_stmts))
} else if variants.is_empty() { } else if variants.is_empty() {
// As an additional wrinkle, For a zero-variant enum A, // As an additional wrinkle, For a zero-variant enum A,
// currently the compiler // currently the compiler