diff options
| author | Brian Anderson <[email protected]> | 2011-01-31 23:06:02 -0500 |
|---|---|---|
| committer | Brian Anderson <[email protected]> | 2011-02-01 00:08:47 -0500 |
| commit | 3fedb18c0af0bd9fa5e4973936003c0b57e4d3e8 (patch) | |
| tree | 69adf95963fda1fedd3338d30f095f73d1c37c77 /src/comp/middle/fold.rs | |
| parent | Merge branch 'master' into forgraydon-elseif (diff) | |
| download | rust-3fedb18c0af0bd9fa5e4973936003c0b57e4d3e8.tar.xz rust-3fedb18c0af0bd9fa5e4973936003c0b57e4d3e8.zip | |
Allow the else part of an expr_if to be either expr_if or expr_block
Diffstat (limited to 'src/comp/middle/fold.rs')
| -rw-r--r-- | src/comp/middle/fold.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/comp/middle/fold.rs b/src/comp/middle/fold.rs index 67c26014..ca10e79f 100644 --- a/src/comp/middle/fold.rs +++ b/src/comp/middle/fold.rs @@ -100,7 +100,7 @@ type ast_fold[ENV] = (fn(&ENV e, &span sp, @expr cond, &block thn, - &option.t[block] els, + &option.t[@expr] els, ann a) -> @expr) fold_expr_if, (fn(&ENV e, &span sp, @@ -504,10 +504,10 @@ fn fold_expr[ENV](&ENV env, ast_fold[ENV] fld, &@expr e) -> @expr { case (ast.expr_if(?cnd, ?thn, ?els, ?t)) { auto ccnd = fold_expr(env_, fld, cnd); auto tthn = fold_block(env_, fld, thn); - auto eels = none[block]; + auto eels = none[@expr]; alt (els) { - case (some[block](?b)) { - eels = some(fold_block(env_, fld, b)); + case (some[@expr](?e)) { + eels = some(fold_expr(env_, fld, e)); } case (_) { /* fall through */ } } @@ -961,7 +961,7 @@ fn identity_fold_expr_cast[ENV](&ENV env, &span sp, @ast.expr e, fn identity_fold_expr_if[ENV](&ENV env, &span sp, @expr cond, &block thn, - &option.t[block] els, ann a) -> @expr { + &option.t[@expr] els, ann a) -> @expr { ret @respan(sp, ast.expr_if(cond, thn, els, a)); } |