Merge ast::proto_shared and ast::proto_closure

Now they are both just proto_shared and proto_shared takes an
argument indicating that it is sugared as 'lambda'
This commit is contained in:
Brian Anderson 2011-10-18 21:18:55 -07:00
parent 4b30a06abe
commit 9efdd0f326
15 changed files with 62 additions and 44 deletions

View file

@ -103,13 +103,16 @@ tag kind { kind_pinned; kind_shared; kind_unique; }
tag _auth { auth_unsafe; }
tag proto_sugar {
sugar_normal;
sugar_sexy;
}
tag proto {
proto_iter;
proto_shared;
proto_block;
// FIXME: Merge with proto_shared
proto_closure;
proto_bare;
proto_shared(proto_sugar);
proto_block;
}
tag binop {

View file

@ -842,7 +842,7 @@ fn parse_bottom_expr(p: parser) -> @ast::expr {
} else if eat_word(p, "block") {
ret parse_fn_expr(p, ast::proto_block);
} else if eat_word(p, "lambda") {
ret parse_fn_expr(p, ast::proto_closure);
ret parse_fn_expr(p, ast::proto_shared(ast::sugar_sexy));
} else if eat_word(p, "unchecked") {
ret parse_block_expr(p, lo, ast::unchecked_blk);
} else if eat_word(p, "unsafe") {
@ -1901,7 +1901,8 @@ fn parse_item_res(p: parser, attrs: [ast::attribute]) -> @ast::item {
il: ast::il_normal,
cf: ast::return_val,
constraints: []};
let f = {decl: decl, proto: ast::proto_shared, body: dtor};
let f = {decl: decl, proto: ast::proto_shared(ast::sugar_normal),
body: dtor};
ret mk_item(p, lo, dtor.span.hi, ident,
ast::item_res(f, p.get_id(), ty_params, p.get_id()), attrs);
}
@ -2140,7 +2141,7 @@ fn parse_fn_item_proto(p: parser) -> ast::proto {
ast::proto_bare
} else if p.peek() == token::AT {
p.bump();
ast::proto_shared
ast::proto_shared(ast::sugar_normal)
} else {
ast::proto_bare
}
@ -2152,7 +2153,7 @@ fn parse_fn_ty_proto(p: parser) -> ast::proto {
ast::proto_bare
} else if p.peek() == token::AT {
p.bump();
ast::proto_shared
ast::proto_shared(ast::sugar_normal)
} else {
ast::proto_bare
}
@ -2164,7 +2165,7 @@ fn parse_fn_anon_proto(p: parser) -> ast::proto {
ast::proto_bare
} else if p.peek() == token::AT {
p.bump();
ast::proto_shared
ast::proto_shared(ast::sugar_normal)
} else {
ast::proto_bare
}

View file

@ -1643,11 +1643,11 @@ fn ast_fn_constrs_str(decl: ast::fn_decl, constrs: [@ast::constr]) -> str {
fn proto_to_str(p: ast::proto) -> str {
ret alt p {
ast::proto_shared. { "fn@" }
ast::proto_iter. { "iter" }
ast::proto_block. { "block" }
ast::proto_closure. { "lambda" }
ast::proto_bare. { "fn" }
ast::proto_block. { "block" }
ast::proto_shared(ast::sugar_normal.) { "fn@" }
ast::proto_shared(ast::sugar_sexy.) { "lambda" }
};
}