about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <respindola@mozilla.com>2011-01-04 17:58:10 -0500
committerRafael Ávila de Espíndola <respindola@mozilla.com>2011-01-04 17:58:10 -0500
commit7c8f99fdc1be0ed80095af160fffae2995cda83f (patch)
treeefd74af4844e715c0a6797833db7a38183f1dc60 /src/comp
parente0fe271d3459d04af9e1580c396b4698063e1999 (diff)
downloadrust-7c8f99fdc1be0ed80095af160fffae2995cda83f.tar.gz
rust-7c8f99fdc1be0ed80095af160fffae2995cda83f.zip
Add names from imports to the namespace.
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/front/ast.rs3
-rw-r--r--src/comp/front/parser.rs7
-rw-r--r--src/comp/middle/resolve.rs4
3 files changed, 9 insertions, 5 deletions
diff --git a/src/comp/front/ast.rs b/src/comp/front/ast.rs
index 15c0e4994a5..fff7b24ca93 100644
--- a/src/comp/front/ast.rs
+++ b/src/comp/front/ast.rs
@@ -36,6 +36,7 @@ tag def {
     def_ty_arg(def_id);
     def_binding(def_id);
     def_use(def_id);
+    def_import(def_id);
 }
 
 type crate = spanned[crate_];
@@ -213,7 +214,7 @@ type _obj = rec(vec[obj_field] fields,
 
 
 tag mod_index_entry {
-    mie_use(uint);
+    mie_view_item(uint);
     mie_item(uint);
     mie_tag_variant(uint /* tag item index */, uint /* variant index */);
 }
diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs
index 8c3db0e10ba..f71fae61386 100644
--- a/src/comp/front/parser.rs
+++ b/src/comp/front/parser.rs
@@ -1,4 +1,5 @@
 import std._io;
+import std._vec;
 import std.option;
 import std.option.some;
 import std.option.none;
@@ -1751,10 +1752,12 @@ impure fn parse_view(parser p, ast.mod_index index) -> vec[@ast.view_item] {
         items += vec(item);
         alt (item.node) {
             case(ast.view_item_use(?id, _, _)) {
-                index.insert(id, ast.mie_use(u));
+                index.insert(id, ast.mie_view_item(u));
             }
             case(ast.view_item_import(?ids,_)) {
-                // FIXME
+                auto len = _vec.len[ast.ident](ids);
+                auto last_id = ids.(len - 1u);
+                index.insert(last_id, ast.mie_view_item(u));
             }
         }
         u = u + 1u;
diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs
index 551993dda8b..e1f58b5d731 100644
--- a/src/comp/middle/resolve.rs
+++ b/src/comp/middle/resolve.rs
@@ -73,7 +73,7 @@ fn lookup_name(&env e, ast.ident i) -> option.t[def] {
                 ret some[def](ast.def_use(id));
             }
             case (ast.view_item_import(_,?id)) {
-                fail;
+                ret some[def](ast.def_import(id));
             }
         }
     }
@@ -82,7 +82,7 @@ fn lookup_name(&env e, ast.ident i) -> option.t[def] {
         alt (m.index.find(i)) {
             case (some[ast.mod_index_entry](?ent)) {
                 alt (ent) {
-                    case (ast.mie_use(?ix)) {
+                    case (ast.mie_view_item(?ix)) {
                         ret found_def_view(m.view_items.(ix));
                     }
                     case (ast.mie_item(?ix)) {