Skip to content

Commit ec885b8

Browse files
committed
---
yaml --- r: 1265 b: refs/heads/master c: d313e15 h: refs/heads/master i: 1263: b9c87d5 v: v3
1 parent d17e5a7 commit ec885b8

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
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: e8d266c6140434a491f046cee62346cfd7cb4d98
2+
refs/heads/master: d313e1579bd8a78a15cde9b17819aa7cfbf6f8c1

trunk/src/comp/middle/fold.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,7 @@ fn fold_ty[ENV](&ENV env, ast_fold[ENV] fld, @ty t) -> @ty {
307307
case (ast.ty_obj(?meths)) {
308308
let vec[ast.ty_method] meths_ = vec();
309309
for (ast.ty_method m in meths) {
310-
auto tfn = fld.fold_ty_fn(env_, t.span,
311-
m.inputs, m.output);
310+
auto tfn = fold_ty_fn(env_, fld, t.span, m.inputs, m.output);
312311
alt (tfn.node) {
313312
case (ast.ty_fn(?ins, ?out)) {
314313
append[ast.ty_method]
@@ -330,11 +329,24 @@ fn fold_ty[ENV](&ENV env, ast_fold[ENV] fld, @ty t) -> @ty {
330329
}
331330

332331
case (ast.ty_fn(?inputs, ?output)) {
333-
ret fld.fold_ty_fn(env_, t.span, inputs, output);
332+
ret fold_ty_fn(env_, fld, t.span, inputs, output);
334333
}
335334
}
336335
}
337336

337+
fn fold_ty_fn[ENV](&ENV env, ast_fold[ENV] fld, &span sp,
338+
vec[rec(ast.mode mode, @ty ty)] inputs,
339+
@ty output) -> @ty {
340+
auto output_ = fold_ty(env, fld, output);
341+
let vec[rec(ast.mode mode, @ty ty)] inputs_ = vec();
342+
for (rec(ast.mode mode, @ty ty) input in inputs) {
343+
auto ty_ = fold_ty(env, fld, input.ty);
344+
auto input_ = rec(ty=ty_ with input);
345+
inputs_ += vec(input_);
346+
}
347+
ret fld.fold_ty_fn(env, sp, inputs_, output_);
348+
}
349+
338350
fn fold_decl[ENV](&ENV env, ast_fold[ENV] fld, @decl d) -> @decl {
339351
let ENV env_ = fld.update_env_for_decl(env, d);
340352

0 commit comments

Comments
 (0)