Skip to content

Commit 52883fe

Browse files
lkupergraydon
authored andcommitted
---
yaml --- r: 1999 b: refs/heads/master c: b8bb2e1 h: refs/heads/master i: 1997: 2370c16 1995: 42b9c16 1991: 679bbf3 1983: a097b4c v: v3
1 parent a60dd98 commit 52883fe

File tree

8 files changed

+100
-119
lines changed

8 files changed

+100
-119
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: 8703c8067fb8a22ec9b296efea162aac3e7f9521
2+
refs/heads/master: b8bb2e118e9815316320f946ef3fc7e6909ed7c9

trunk/src/comp/front/ast.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ tag expr_ {
258258
expr_tup(vec[elt], ann);
259259
expr_rec(vec[field], option.t[@expr], ann);
260260
expr_call(@expr, vec[@expr], ann);
261-
expr_call_self(@expr, vec[@expr], ann);
261+
expr_call_self(ident, vec[@expr], ann);
262262
expr_bind(@expr, vec[option.t[@expr]], ann);
263263
expr_spawn(spawn_dom, option.t[str], @expr, vec[@expr], ann);
264264
expr_binary(binop, @expr, @expr, ann);

trunk/src/comp/front/parser.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -887,10 +887,12 @@ impure fn parse_bottom_expr(parser p) -> @ast.expr {
887887
}
888888

889889
case (token.SELF) {
890+
log "parsing a self-call...";
891+
890892
p.bump();
891893
expect(p, token.DOT);
892894
// The rest is a call expression.
893-
auto e = parse_bottom_expr(p);
895+
auto e = parse_ident(p);
894896
auto pf = parse_expr;
895897
auto es = parse_seq[@ast.expr](token.LPAREN,
896898
token.RPAREN,

trunk/src/comp/front/token.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,8 @@ fn to_str(token t) -> str {
348348

349349
/* Object type */
350350
case (OBJ) { ret "obj"; }
351+
case (SELF) { ret "self"; }
352+
351353

352354
/* Comm and task types */
353355
case (CHAN) { ret "chan"; }

trunk/src/comp/middle/fold.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ type ast_fold[ENV] =
8888
ann a) -> @expr) fold_expr_call,
8989

9090
(fn(&ENV e, &span sp,
91-
@expr f, vec[@expr] args,
91+
ident id, vec[@expr] args,
9292
ann a) -> @expr) fold_expr_call_self,
9393

9494
(fn(&ENV e, &span sp,
@@ -566,10 +566,9 @@ fn fold_expr[ENV](&ENV env, ast_fold[ENV] fld, &@expr e) -> @expr {
566566
ret fld.fold_expr_call(env_, e.span, ff, aargs, t);
567567
}
568568

569-
case (ast.expr_call_self(?f, ?args, ?t)) {
570-
auto ff = fold_expr(env_, fld, f);
569+
case (ast.expr_call_self(?ident, ?args, ?t)) {
571570
auto aargs = fold_exprs(env_, fld, args);
572-
ret fld.fold_expr_call_self(env_, e.span, ff, aargs, t);
571+
ret fld.fold_expr_call_self(env_, e.span, ident, aargs, t);
573572
}
574573

575574
case (ast.expr_bind(?f, ?args_opt, ?t)) {
@@ -1185,9 +1184,9 @@ fn identity_fold_expr_call[ENV](&ENV env, &span sp, @expr f,
11851184
ret @respan(sp, ast.expr_call(f, args, a));
11861185
}
11871186

1188-
fn identity_fold_expr_call_self[ENV](&ENV env, &span sp, @expr f,
1187+
fn identity_fold_expr_call_self[ENV](&ENV env, &span sp, ident id,
11891188
vec[@expr] args, ann a) -> @expr {
1190-
ret @respan(sp, ast.expr_call_self(f, args, a));
1189+
ret @respan(sp, ast.expr_call_self(id, args, a));
11911190
}
11921191

11931192
fn identity_fold_expr_bind[ENV](&ENV env, &span sp, @expr f,

0 commit comments

Comments
 (0)