about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2011-05-24 20:58:38 +0200
committerMarijn Haverbeke <marijnh@gmail.com>2011-05-24 20:58:38 +0200
commitfbc0e840e3e660c0f0acd3e738d005b2a4aec00f (patch)
tree26ae63af11644d8cf751a3849dd16808bf64e3c8 /src
parentbad05e20a35318c7790990683bcdf2d254c8059a (diff)
downloadrust-fbc0e840e3e660c0f0acd3e738d005b2a4aec00f.tar.gz
rust-fbc0e840e3e660c0f0acd3e738d005b2a4aec00f.zip
Stop showing a 'cyclic import' message for unresolved imports
This only happened for single-length import paths, because the import
was being looked up in its own scope.
Diffstat (limited to 'src')
-rw-r--r--src/comp/middle/resolve.rs9
-rw-r--r--src/test/compile-fail/bad-module.rs4
-rw-r--r--src/test/compile-fail/import-loop.rs9
3 files changed, 13 insertions, 9 deletions
diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs
index 608bcf0b00a..439546a2b4a 100644
--- a/src/comp/middle/resolve.rs
+++ b/src/comp/middle/resolve.rs
@@ -323,10 +323,11 @@ fn resolve_import(&env e, &@ast::view_item it, &list[scope] sc) {
     auto end_id = ids.(n_idents - 1u);
 
     if (n_idents == 1u) {
+        auto next_sc = std::list::cdr(sc);
         register(e, defid, it.span, end_id,
-                 lookup_in_scope(e, sc, it.span, end_id, ns_value),
-                 lookup_in_scope(e, sc, it.span, end_id, ns_type),
-                 lookup_in_scope(e, sc, it.span, end_id, ns_module));
+                 lookup_in_scope(e, next_sc, it.span, end_id, ns_value),
+                 lookup_in_scope(e, next_sc, it.span, end_id, ns_type),
+                 lookup_in_scope(e, next_sc, it.span, end_id, ns_module));
     } else {
         auto dcur = lookup_in_scope_strict(e, sc, it.span, ids.(0),
                                            ns_module);
@@ -724,7 +725,7 @@ fn lookup_import(&env e, def_id defid, namespace ns) -> option::t[def] {
             ret lookup_import(e, defid, ns);
         }
         case (resolving(?sp)) {
-            e.sess.span_err(sp, "cyclic import or nonexistent module");
+            e.sess.span_err(sp, "cyclic import");
         }
         case (resolved(?val, ?typ, ?md)) {
             ret alt (ns) { case (ns_value) { val }
diff --git a/src/test/compile-fail/bad-module.rs b/src/test/compile-fail/bad-module.rs
index d9d35f327f5..76ba22dcbf9 100644
--- a/src/test/compile-fail/bad-module.rs
+++ b/src/test/compile-fail/bad-module.rs
@@ -1,7 +1,7 @@
 // xfail-stage0
-// error-pattern: nonexistent module
+// error-pattern: unresolved import: vec
 import vec;
 
 fn main() {
-  auto foo = vec.len([]);
+    auto foo = vec::len([]);
 }
\ No newline at end of file
diff --git a/src/test/compile-fail/import-loop.rs b/src/test/compile-fail/import-loop.rs
index 649e2d5d3bc..7867c00f00e 100644
--- a/src/test/compile-fail/import-loop.rs
+++ b/src/test/compile-fail/import-loop.rs
@@ -1,7 +1,10 @@
-// error-pattern:cyclic import
+// error-pattern: cyclic import
 
-import x;
+import y::x;
+
+mod y {
+    import x;
+}
 
 fn main() {
-  auto y = x;
 }