aboutsummaryrefslogtreecommitdiff
path: root/src/comp/middle/fold.rs
diff options
context:
space:
mode:
authorLindsey Kuper <[email protected]>2011-04-05 14:18:44 -0700
committerGraydon Hoare <[email protected]>2011-04-05 14:54:48 -0700
commitb8bb2e118e9815316320f946ef3fc7e6909ed7c9 (patch)
tree6b550692b0b086bde56c621f5ffd428e7dcc1b08 /src/comp/middle/fold.rs
parentFIx native wrapper generation to handle more arg types. (diff)
downloadrust-b8bb2e118e9815316320f946ef3fc7e6909ed7c9.tar.xz
rust-b8bb2e118e9815316320f946ef3fc7e6909ed7c9.zip
Further on the path toward self-awareness.
Mostly: * Merciless refactoring of trans.rs so that trans_call can work for self-calls as well as other kinds of calls Also: * Various changes to go with having idents, rather than exprs, in expr_call_self AST nodes * Added missing case for SELF token to token.to_str()
Diffstat (limited to 'src/comp/middle/fold.rs')
-rw-r--r--src/comp/middle/fold.rs11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/comp/middle/fold.rs b/src/comp/middle/fold.rs
index d7a18783..77c89836 100644
--- a/src/comp/middle/fold.rs
+++ b/src/comp/middle/fold.rs
@@ -88,7 +88,7 @@ type ast_fold[ENV] =
ann a) -> @expr) fold_expr_call,
(fn(&ENV e, &span sp,
- @expr f, vec[@expr] args,
+ ident id, vec[@expr] args,
ann a) -> @expr) fold_expr_call_self,
(fn(&ENV e, &span sp,
@@ -566,10 +566,9 @@ fn fold_expr[ENV](&ENV env, ast_fold[ENV] fld, &@expr e) -> @expr {
ret fld.fold_expr_call(env_, e.span, ff, aargs, t);
}
- case (ast.expr_call_self(?f, ?args, ?t)) {
- auto ff = fold_expr(env_, fld, f);
+ case (ast.expr_call_self(?ident, ?args, ?t)) {
auto aargs = fold_exprs(env_, fld, args);
- ret fld.fold_expr_call_self(env_, e.span, ff, aargs, t);
+ ret fld.fold_expr_call_self(env_, e.span, ident, aargs, t);
}
case (ast.expr_bind(?f, ?args_opt, ?t)) {
@@ -1185,9 +1184,9 @@ fn identity_fold_expr_call[ENV](&ENV env, &span sp, @expr f,
ret @respan(sp, ast.expr_call(f, args, a));
}
-fn identity_fold_expr_call_self[ENV](&ENV env, &span sp, @expr f,
+fn identity_fold_expr_call_self[ENV](&ENV env, &span sp, ident id,
vec[@expr] args, ann a) -> @expr {
- ret @respan(sp, ast.expr_call_self(f, args, a));
+ ret @respan(sp, ast.expr_call_self(id, args, a));
}
fn identity_fold_expr_bind[ENV](&ENV env, &span sp, @expr f,