diff options
| author | Rafael Ávila de Espíndola <[email protected]> | 2011-01-28 11:54:59 -0500 |
|---|---|---|
| committer | Rafael Ávila de Espíndola <[email protected]> | 2011-01-28 11:54:59 -0500 |
| commit | 3cac20dae3272728282466467cb0193d7dbbf00c (patch) | |
| tree | a257f43c91b257ce34eb8eff0d4839af8787075f /src/comp/middle | |
| parent | Add helper function for derived type descriptors. (diff) | |
| download | rust-3cac20dae3272728282466467cb0193d7dbbf00c.tar.xz rust-3cac20dae3272728282466467cb0193d7dbbf00c.zip | |
Correctly handle "import foo = bar.zed;".
Diffstat (limited to 'src/comp/middle')
| -rw-r--r-- | src/comp/middle/fold.rs | 20 | ||||
| -rw-r--r-- | src/comp/middle/resolve.rs | 12 |
2 files changed, 16 insertions, 16 deletions
diff --git a/src/comp/middle/fold.rs b/src/comp/middle/fold.rs index 8a6f82f2..711db111 100644 --- a/src/comp/middle/fold.rs +++ b/src/comp/middle/fold.rs @@ -213,7 +213,7 @@ type ast_fold[ENV] = vec[@meta_item] meta_items, def_id id) -> @view_item) fold_view_item_use, - (fn(&ENV e, &span sp, vec[ident] idents, + (fn(&ENV e, &span sp, ident i, vec[ident] idents, def_id id, option.t[def]) -> @view_item) fold_view_item_import, // Additional nodes. @@ -725,14 +725,13 @@ fn fold_view_item[ENV](&ENV env, ast_fold[ENV] fld, @view_item vi) alt (vi.node) { case (ast.view_item_use(?ident, ?meta_items, ?def_id)) { - // FIXME: what other folding should be done in here? ret fld.fold_view_item_use(env_, vi.span, ident, meta_items, def_id); } - case (ast.view_item_import(?idents, ?def_id, ?target_def)) { - // FIXME: what other folding should be done in here? - ret fld.fold_view_item_import(env_, vi.span, idents, def_id, - target_def); + case (ast.view_item_import(?def_ident, ?idents, ?def_id, + ?target_def)) { + ret fld.fold_view_item_import(env_, vi.span, def_ident, idents, + def_id, target_def); } } @@ -1116,10 +1115,11 @@ fn identity_fold_view_item_use[ENV](&ENV e, &span sp, ident i, ret @respan(sp, ast.view_item_use(i, meta_items, id)); } -fn identity_fold_view_item_import[ENV](&ENV e, &span sp, vec[ident] is, - def_id id, option.t[def] target_def) +fn identity_fold_view_item_import[ENV](&ENV e, &span sp, ident i, + vec[ident] is, def_id id, + option.t[def] target_def) -> @view_item { - ret @respan(sp, ast.view_item_import(is, id, target_def)); + ret @respan(sp, ast.view_item_import(i, is, id, target_def)); } // Additional identities. @@ -1271,7 +1271,7 @@ fn new_identity_fold[ENV]() -> ast_fold[ENV] { fold_view_item_use = bind identity_fold_view_item_use[ENV](_,_,_,_,_), fold_view_item_import = - bind identity_fold_view_item_import[ENV](_,_,_,_,_), + bind identity_fold_view_item_import[ENV](_,_,_,_,_,_), fold_block = bind identity_fold_block[ENV](_,_,_), fold_fn = bind identity_fold_fn[ENV](_,_,_,_,_,_), diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs index 380ec150..1af3b205 100644 --- a/src/comp/middle/resolve.rs +++ b/src/comp/middle/resolve.rs @@ -50,7 +50,7 @@ fn unwrap_def(def_wrap d) -> def { } case (def_wrap_import(?it)) { alt (it.node) { - case (ast.view_item_import(_, ?id, ?target_def)) { + case (ast.view_item_import(_, _, ?id, ?target_def)) { alt (target_def) { case (some[def](?d)) { ret d; @@ -106,7 +106,7 @@ fn find_final_def(&env e, import_map index, alt (d) { case (def_wrap_import(?imp)) { alt (imp.node) { - case (ast.view_item_import(?new_idents, ?d, _)) { + case (ast.view_item_import(_, ?new_idents, ?d, _)) { auto x = find_final_def(e, index, sp, new_idents, some(d)); ret found_something(e, index, sp, idents, x); @@ -235,7 +235,7 @@ fn lookup_name_wrapped(&env e, ast.ident i) -> option.t[tup(@env, def_wrap)] { case (ast.view_item_use(_, _, ?id)) { ret def_wrap_use(i); } - case (ast.view_item_import(?idents,?d, _)) { + case (ast.view_item_import(_, ?idents,?d, _)) { ret def_wrap_import(i); } } @@ -456,7 +456,7 @@ fn fold_expr_path(&env e, &span sp, &ast.path p, &option.t[def] d, } fn fold_view_item_import(&env e, &span sp, - import_map index, + import_map index, ident i, vec[ident] is, ast.def_id id, option.t[def] target_id) -> @ast.view_item { // Produce errors for invalid imports @@ -472,7 +472,7 @@ fn fold_view_item_import(&env e, &span sp, } } let option.t[def] target_def = some(unwrap_def(d)); - ret @fold.respan[ast.view_item_](sp, ast.view_item_import(is, id, + ret @fold.respan[ast.view_item_](sp, ast.view_item_import(i, is, id, target_def)); } @@ -514,7 +514,7 @@ fn resolve_imports(session.session sess, @ast.crate crate) -> @ast.crate { auto import_index = new_def_hash[def_wrap](); fld = @rec( fold_view_item_import - = bind fold_view_item_import(_,_,import_index,_,_,_), + = bind fold_view_item_import(_,_,import_index,_,_,_,_), update_env_for_crate = bind update_env_for_crate(_,_), update_env_for_item = bind update_env_for_item(_,_), update_env_for_block = bind update_env_for_block(_,_), |