convert ast::blk_ into a struct

This commit is contained in:
Erick Tryzelaar 2013-01-14 19:35:08 -08:00
parent 0b9e23146b
commit 3ea3136e84
8 changed files with 108 additions and 65 deletions

View File

@ -313,11 +313,13 @@ type blk = spanned<blk_>;
#[auto_encode]
#[auto_decode]
type blk_ = {view_items: ~[@view_item],
stmts: ~[@stmt],
expr: Option<@expr>,
id: node_id,
rules: blk_check_mode};
struct blk_ {
view_items: ~[@view_item],
stmts: ~[@stmt],
expr: Option<@expr>,
id: node_id,
rules: blk_check_mode,
}
#[auto_encode]
#[auto_decode]

View File

@ -289,10 +289,18 @@ fn block_from_expr(e: @expr) -> blk {
return spanned {node: blk_, span: e.span};
}
fn default_block(+stmts1: ~[@stmt], expr1: Option<@expr>, id1: node_id) ->
blk_ {
{view_items: ~[], stmts: stmts1,
expr: expr1, id: id1, rules: default_blk}
fn default_block(
+stmts1: ~[@stmt],
expr1: Option<@expr>,
id1: node_id
) -> blk_ {
ast::blk_ {
view_items: ~[],
stmts: stmts1,
expr: expr1,
id: id1,
rules: default_blk,
}
}
fn ident_to_path(s: span, +i: ident) -> @path {

View File

@ -356,21 +356,29 @@ priv impl ext_ctxt {
}
fn blk(span: span, stmts: ~[@ast::stmt]) -> ast::blk {
ast::spanned { node: { view_items: ~[],
stmts: stmts,
expr: None,
id: self.next_id(),
rules: ast::default_blk},
span: span }
ast::spanned {
node: ast::blk_ {
view_items: ~[],
stmts: stmts,
expr: None,
id: self.next_id(),
rules: ast::default_blk,
},
span: span,
}
}
fn expr_blk(expr: @ast::expr) -> ast::blk {
ast::spanned { node: { view_items: ~[],
stmts: ~[],
expr: Some(expr),
id: self.next_id(),
rules: ast::default_blk},
span: expr.span }
ast::spanned {
node: ast::blk_ {
view_items: ~[],
stmts: ~[],
expr: Some(expr),
id: self.next_id(),
rules: ast::default_blk,
},
span: expr.span,
}
}
fn expr_path(span: span, strs: ~[ast::ident]) -> @ast::expr {

View File

@ -196,39 +196,45 @@ fn mk_local(cx: ext_ctxt, sp: span, mutbl: bool,
let decl = ast::spanned {node: ast::decl_local(~[local]), span: sp};
@ast::spanned { node: ast::stmt_decl(@decl, cx.next_id()), span: sp }
}
fn mk_block(cx: ext_ctxt, sp: span,
fn mk_block(cx: ext_ctxt, span: span,
view_items: ~[@ast::view_item],
stmts: ~[@ast::stmt],
expr: Option<@ast::expr>) -> @ast::expr {
let blk = ast::spanned { node: { view_items: view_items,
stmts: stmts,
expr: expr,
id: cx.next_id(),
rules: ast::default_blk },
span: sp };
mk_expr(cx, sp, ast::expr_block(blk))
let blk = ast::spanned {
node: ast::blk_ {
view_items: view_items,
stmts: stmts,
expr: expr,
id: cx.next_id(),
rules: ast::default_blk,
},
span: span,
};
mk_expr(cx, span, ast::expr_block(blk))
}
fn mk_block_(cx: ext_ctxt, sp: span, +stmts: ~[@ast::stmt]) -> ast::blk {
fn mk_block_(cx: ext_ctxt, span: span, +stmts: ~[@ast::stmt]) -> ast::blk {
ast::spanned {
node: {
node: ast::blk_ {
view_items: ~[],
stmts: move stmts,
stmts: stmts,
expr: None,
id: cx.next_id(),
rules: ast::default_blk
rules: ast::default_blk,
},
span: sp
span: span,
}
}
fn mk_simple_block(cx: ext_ctxt, span: span, expr: @ast::expr) -> ast::blk {
let block = {
view_items: ~[],
stmts: ~[],
expr: Some(expr),
id: cx.next_id(),
rules: ast::default_blk
};
ast::spanned { node: block, span: span }
ast::spanned {
node: ast::blk_ {
view_items: ~[],
stmts: ~[],
expr: Some(expr),
id: cx.next_id(),
rules: ast::default_blk,
},
span: span,
}
}
fn mk_copy(cx: ext_ctxt, sp: span, e: @ast::expr) -> @ast::expr {
mk_expr(cx, sp, ast::expr_copy(e))

View File

@ -193,11 +193,13 @@ impl ext_ctxt: ext_ctxt_ast_builder {
}
fn block(+stmts: ~[@ast::stmt], e: @ast::expr) -> ast::blk {
let blk = {view_items: ~[],
stmts: stmts,
expr: Some(e),
id: self.next_id(),
rules: ast::default_blk};
let blk = ast::blk_ {
view_items: ~[],
stmts: stmts,
expr: Some(e),
id: self.next_id(),
rules: ast::default_blk,
};
spanned { node: blk, span: dummy_sp() }
}

View File

@ -319,11 +319,13 @@ fn noop_fold_method(&&m: @method, fld: ast_fold) -> @method {
fn noop_fold_block(b: blk_, fld: ast_fold) -> blk_ {
return {view_items: vec::map(b.view_items, |x| fld.fold_view_item(*x)),
stmts: vec::map(b.stmts, |x| fld.fold_stmt(*x)),
expr: option::map(&b.expr, |x| fld.fold_expr(*x)),
id: fld.new_id(b.id),
rules: b.rules};
ast::blk_ {
view_items: b.view_items.map(|x| fld.fold_view_item(*x)),
stmts: b.stmts.map(|x| fld.fold_stmt(*x)),
expr: b.expr.map(|x| fld.fold_expr(*x)),
id: fld.new_id(b.id),
rules: b.rules,
}
}
fn noop_fold_stmt(s: stmt_, fld: ast_fold) -> stmt_ {

View File

@ -30,8 +30,9 @@ fn expr_requires_semi_to_be_stmt(e: @ast::expr) -> bool {
fn expr_is_simple_block(e: @ast::expr) -> bool {
match e.node {
ast::expr_block(ast::spanned {node: {rules: ast::default_blk, _}, _}) =>
true,
ast::expr_block(
ast::spanned { node: ast::blk_ { rules: ast::default_blk, _ }, _ }
) => true,
_ => false
}
}

View File

@ -1574,8 +1574,13 @@ impl Parser {
let lo = self.last_span.lo;
let (decl, captures) = parse_decl();
let body = parse_body();
let fakeblock = {view_items: ~[], stmts: ~[], expr: Some(body),
id: self.get_id(), rules: default_blk};
let fakeblock = ast::blk_ {
view_items: ~[],
stmts: ~[],
expr: Some(body),
id: self.get_id(),
rules: default_blk,
};
let fakeblock = spanned(body.span.lo, body.span.hi,
fakeblock);
return self.mk_expr(lo, body.span.hi,
@ -1753,12 +1758,16 @@ impl Parser {
self.eat(token::COMMA);
}
let blk = spanned { node: { view_items: ~[],
stmts: ~[],
expr: Some(expr),
id: self.get_id(),
rules: default_blk},
span: expr.span };
let blk = spanned {
node: ast::blk_ {
view_items: ~[],
stmts: ~[],
expr: Some(expr),
id: self.get_id(),
rules: default_blk,
},
span: expr.span,
};
arms.push({pats: pats, guard: guard, body: blk});
}
@ -2378,9 +2387,14 @@ impl Parser {
}
let mut hi = self.span.hi;
self.bump();
let bloc = {view_items: view_items, stmts: stmts, expr: expr,
id: self.get_id(), rules: s};
return spanned(lo, hi, bloc);
let bloc = ast::blk_ {
view_items: view_items,
stmts: stmts,
expr: expr,
id: self.get_id(),
rules: s,
};
spanned(lo, hi, bloc)
}
fn mk_ty_path(i: ident) -> @Ty {