about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <respindola@mozilla.com>2011-01-27 16:39:31 -0500
committerRafael Ávila de Espíndola <respindola@mozilla.com>2011-01-27 16:39:31 -0500
commitc170e7edfdfe156f11374d5e3c265b613351dc99 (patch)
tree732a37f12a5784a051e021a410bcd5690a6657e4
parent21208f23439acfae35e615abbe791b3011b950bc (diff)
downloadrust-c170e7edfdfe156f11374d5e3c265b613351dc99.tar.gz
rust-c170e7edfdfe156f11374d5e3c265b613351dc99.zip
Resolve type paths.
-rw-r--r--src/comp/middle/resolve.rs21
-rw-r--r--src/test/run-pass/alt-path.rs3
2 files changed, 4 insertions, 20 deletions
diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs
index 8010b2a5900..21959b61b8b 100644
--- a/src/comp/middle/resolve.rs
+++ b/src/comp/middle/resolve.rs
@@ -486,25 +486,10 @@ fn fold_view_item_import(&env e, &span sp,
 }
 
 fn fold_ty_path(&env e, &span sp, ast.path p, &option.t[def] d) -> @ast.ty {
+    auto index = new_def_hash[def_wrap]();
+    auto d = find_final_def(e, index, sp, p.node.idents, none[ast.def_id]);
 
-    let uint len = _vec.len[ast.ident](p.node.idents);
-    check (len != 0u);
-    if (len > 1u) {
-        e.sess.unimpl("resolving path ty with >1 component");
-    }
-
-    auto d_ = lookup_name(e, p.node.idents.(0));
-
-    alt (d_) {
-        case (some[def](?d)) {
-            // log "resolved name " + p.node.idents.(0);
-        }
-        case (none[def]) {
-            e.sess.span_err(sp, "unresolved name: " + p.node.idents.(0));
-        }
-    }
-
-    ret @fold.respan[ast.ty_](sp, ast.ty_path(p, d_));
+    ret @fold.respan[ast.ty_](sp, ast.ty_path(p, some(unwrap_def(d))));
 }
 
 fn update_env_for_crate(&env e, @ast.crate c) -> env {
diff --git a/src/test/run-pass/alt-path.rs b/src/test/run-pass/alt-path.rs
index 45faa700d0b..ad55713b085 100644
--- a/src/test/run-pass/alt-path.rs
+++ b/src/test/run-pass/alt-path.rs
@@ -1,11 +1,10 @@
-import m1.foo;
 mod m1 {
   tag foo {
     foo1;
     foo2;
   }
 }
-fn bar(foo x) {
+fn bar(m1.foo x) {
   alt(x) {
     case (m1.foo1) {
     }