diff options
Diffstat (limited to 'src/comp/middle')
| -rw-r--r-- | src/comp/middle/fold.rs | 10 | ||||
| -rw-r--r-- | src/comp/middle/resolve.rs | 12 |
2 files changed, 13 insertions, 9 deletions
diff --git a/src/comp/middle/fold.rs b/src/comp/middle/fold.rs index 6679fc5f..4adf5ff9 100644 --- a/src/comp/middle/fold.rs +++ b/src/comp/middle/fold.rs @@ -779,14 +779,18 @@ fn fold_mod[ENV](&ENV e, ast_fold[ENV] fld, &ast._mod m) -> ast._mod { let vec[@view_item] view_items = vec(); let vec[@item] items = vec(); - auto index = m.index; + auto index = new_str_hash[ast.mod_index_entry](); for (@view_item vi in m.view_items) { - append[@view_item](view_items, fold_view_item[ENV](e, fld, vi)); + auto new_vi = fold_view_item[ENV](e, fld, vi); + append[@view_item](view_items, new_vi); + ast.index_view_item(index, new_vi); } for (@item i in m.items) { - append[@item](items, fold_item[ENV](e, fld, i)); + auto new_item = fold_item[ENV](e, fld, i); + append[@item](items, new_item); + ast.index_item(index, new_item); } ret fld.fold_mod(e, rec(view_items=view_items, items=items, index=index)); diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs index 95f84f46..e3b3c5a7 100644 --- a/src/comp/middle/resolve.rs +++ b/src/comp/middle/resolve.rs @@ -166,14 +166,14 @@ fn lookup_name(&env e, option.t[import_map] index, alt (m.index.find(i)) { case (some[ast.mod_index_entry](?ent)) { alt (ent) { - case (ast.mie_view_item(?ix)) { - ret found_def_view(e, index, m.view_items.(ix)); + case (ast.mie_view_item(?view_item)) { + ret found_def_view(e, index, view_item); } - case (ast.mie_item(?ix)) { - ret found_def_item(m.items.(ix)); + case (ast.mie_item(?item)) { + ret found_def_item(item); } - case (ast.mie_tag_variant(?item_idx, ?variant_idx)) { - alt (m.items.(item_idx).node) { + case (ast.mie_tag_variant(?item, ?variant_idx)) { + alt (item.node) { case (ast.item_tag(_, ?variants, _, ?tid)) { auto vid = variants.(variant_idx).id; auto t = ast.def_variant(tid, vid); |