Skip to content

Commit 1b0da12

Browse files
committed
Update method-fold env with fake item_fn representing the method.
1 parent ad889ba commit 1b0da12

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/comp/middle/fold.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -663,8 +663,19 @@ fn fold_obj[ENV](&ENV env, ast_fold[ENV] fld, &ast._obj ob) -> ast._obj {
663663
for (ast.obj_field f in ob.fields) {
664664
fields += fold_obj_field(env, fld, f);
665665
}
666+
let vec[ast.ty_param] tp = vec();
666667
for (@ast.method m in ob.methods) {
667-
append[@ast.method](meths, fold_method(env, fld, m));
668+
// Fake-up an ast.item for this method.
669+
// FIXME: this is kinda awful. Maybe we should reformulate
670+
// the way we store methods in the AST?
671+
let @ast.item i = @rec(node=ast.item_fn(m.node.ident,
672+
m.node.meth,
673+
tp,
674+
m.node.id,
675+
m.node.ann),
676+
span=m.span);
677+
let ENV _env = fld.update_env_for_item(env, i);
678+
append[@ast.method](meths, fold_method(_env, fld, m));
668679
}
669680
ret fld.fold_obj(env, fields, meths);
670681
}

0 commit comments

Comments
 (0)