diff options
Diffstat (limited to 'src/comp/middle')
| -rw-r--r-- | src/comp/middle/fold.rs | 10 | ||||
| -rw-r--r-- | src/comp/middle/typeck.rs | 3 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/comp/middle/fold.rs b/src/comp/middle/fold.rs index 8ec0bd2f..60c5f44b 100644 --- a/src/comp/middle/fold.rs +++ b/src/comp/middle/fold.rs @@ -185,7 +185,8 @@ type ast_fold[ENV] = (fn(&ENV e, &span sp, &ast.block_) -> block) fold_block, - (fn(&ENV e, vec[arg] inputs, + (fn(&ENV e, ast.effect effect, + vec[arg] inputs, @ty output, &block body) -> ast._fn) fold_fn, (fn(&ENV e, &ast._mod m) -> ast._mod) fold_mod, @@ -570,7 +571,7 @@ fn fold_fn[ENV](&ENV env, ast_fold[ENV] fld, &ast._fn f) -> ast._fn { auto output = fold_ty[ENV](env, fld, f.output); auto body = fold_block[ENV](env, fld, f.body); - ret fld.fold_fn(env, inputs, output, body); + ret fld.fold_fn(env, f.effect, inputs, output, body); } fn fold_item[ENV](&ENV env, ast_fold[ENV] fld, @item i) -> @item { @@ -891,10 +892,11 @@ fn identity_fold_block[ENV](&ENV e, &span sp, &ast.block_ blk) -> block { } fn identity_fold_fn[ENV](&ENV e, + ast.effect effect, vec[arg] inputs, @ast.ty output, &block body) -> ast._fn { - ret rec(inputs=inputs, output=output, body=body); + ret rec(effect=effect, inputs=inputs, output=output, body=body); } fn identity_fold_mod[ENV](&ENV e, &ast._mod m) -> ast._mod { @@ -1007,7 +1009,7 @@ fn new_identity_fold[ENV]() -> ast_fold[ENV] { fold_item_tag = bind identity_fold_item_tag[ENV](_,_,_,_,_,_), fold_block = bind identity_fold_block[ENV](_,_,_), - fold_fn = bind identity_fold_fn[ENV](_,_,_,_), + fold_fn = bind identity_fold_fn[ENV](_,_,_,_,_), fold_mod = bind identity_fold_mod[ENV](_,_), fold_crate = bind identity_fold_crate[ENV](_,_,_), diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs index 5bf9dd31..208c395a 100644 --- a/src/comp/middle/typeck.rs +++ b/src/comp/middle/typeck.rs @@ -1643,7 +1643,8 @@ fn check_fn(&@crate_ctxt ccx, &span sp, ast.ident ident, &ast._fn f, auto block_t = check_block(fcx, f.body); auto block_wb = writeback(fcx, block_t); - auto fn_t = rec(inputs=f.inputs, output=f.output, body=block_wb); + auto fn_t = rec(effect=f.effect, inputs=f.inputs, output=f.output, + body=block_wb); auto item = ast.item_fn(ident, fn_t, ty_params, id, fn_ann); ret @fold.respan[ast.item_](sp, item); } |