Skip to content

Commit 7dcc9c1

Browse files
committed
---
yaml --- r: 4137 b: refs/heads/master c: 8c8fa79 h: refs/heads/master i: 4135: 4431246 v: v3
1 parent badf846 commit 7dcc9c1

File tree

4 files changed

+20
-6
lines changed

4 files changed

+20
-6
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: eaab0db4ea44594505a5c22c056b9c3fb1cdd17c
2+
refs/heads/master: 8c8fa79312e4c357bd234df5112ceba75ef0dd34

trunk/src/comp/syntax/ast.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ tag layer { layer_value; layer_state; layer_gc; }
166166

167167
tag _auth { auth_unsafe; }
168168

169-
tag proto { proto_iter; proto_fn; }
169+
tag proto { proto_iter; proto_fn; proto_block; proto_closure; }
170170

171171
tag binop {
172172
add;

trunk/src/comp/syntax/parse/parser.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,8 @@ fn bad_expr_word_table() -> hashmap[str, ()] {
171171
words.insert("gc", ());
172172
words.insert("native", ());
173173
words.insert("fn", ());
174+
words.insert("block", ());
175+
words.insert("lambda", ());
174176
words.insert("pred", ());
175177
words.insert("iter", ());
176178
words.insert("block", ());
@@ -300,6 +302,8 @@ fn parse_proto(&parser p) -> ast::proto {
300302
ret ast::proto_iter;
301303
} else if (eat_word(p, "fn")) {
302304
ret ast::proto_fn;
305+
} else if (eat_word(p, "block")) {
306+
ret ast::proto_block;
303307
} else if (eat_word(p, "pred")) {
304308
ret ast::proto_fn;
305309
} else { unexpected(p, p.peek()); }
@@ -582,6 +586,10 @@ fn parse_ty(&parser p) -> @ast::ty {
582586
auto flo = p.get_last_lo_pos();
583587
t = parse_ty_fn(ast::proto_fn, p, flo);
584588
alt (t) { case (ast::ty_fn(_, _, ?out, _, _)) { hi = out.span.hi; } }
589+
} else if (eat_word(p, "block")) {
590+
auto flo = p.get_last_lo_pos();
591+
t = parse_ty_fn(ast::proto_block, p, flo);
592+
alt (t) { case (ast::ty_fn(_, _, ?out, _, _)) { hi = out.span.hi; } }
585593
} else if (eat_word(p, "iter")) {
586594
auto flo = p.get_last_lo_pos();
587595
t = parse_ty_fn(ast::proto_iter, p, flo);
@@ -830,7 +838,11 @@ fn parse_bottom_expr(&parser p) -> @ast::expr {
830838
} else if (eat_word(p, "spawn")) {
831839
ret parse_spawn_expr(p);
832840
} else if (eat_word(p, "fn")) {
833-
ret parse_fn_expr(p);
841+
ret parse_fn_expr(p, ast::proto_fn);
842+
} else if (eat_word(p, "block")) {
843+
ret parse_fn_expr(p, ast::proto_block);
844+
} else if (eat_word(p, "lambda")) {
845+
ret parse_fn_expr(p, ast::proto_closure);
834846
} else if (p.peek() == token::LBRACKET) {
835847
p.bump();
836848
auto mut = parse_mutability(p);
@@ -1320,11 +1332,11 @@ fn parse_if_expr(&parser p) -> @ast::expr {
13201332
}
13211333
}
13221334

1323-
fn parse_fn_expr(&parser p) -> @ast::expr {
1335+
fn parse_fn_expr(&parser p, ast::proto proto) -> @ast::expr {
13241336
auto lo = p.get_last_lo_pos();
13251337
auto decl = parse_fn_decl(p, ast::impure_fn);
13261338
auto body = parse_block(p);
1327-
auto _fn = rec(decl=decl, proto=ast::proto_fn, body=body);
1339+
auto _fn = rec(decl=decl, proto=proto, body=body);
13281340
ret mk_expr(p, lo, body.span.hi, ast::expr_fn(_fn));
13291341
}
13301342

@@ -1687,7 +1699,7 @@ fn parse_source_stmt(&parser p) -> @ast::stmt {
16871699
}
16881700
case (fn_no_item) { // parse_item will have already skipped "fn"
16891701

1690-
auto e = parse_fn_expr(p);
1702+
auto e = parse_fn_expr(p, ast::proto_fn);
16911703
e = parse_dot_or_call_expr_with(p, e);
16921704
ret @spanned(lo, e.span.hi, ast::stmt_expr(e, p.get_id()));
16931705
}

trunk/src/comp/syntax/print/pprust.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1551,6 +1551,8 @@ fn proto_to_str(&ast::proto p) -> str {
15511551
ret alt (p) {
15521552
ast::proto_fn { "fn" }
15531553
ast::proto_iter { "iter" }
1554+
ast::proto_block { "block" }
1555+
ast::proto_closure { "lambda" }
15541556
};
15551557
}
15561558

0 commit comments

Comments
 (0)