about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2012-07-18 15:14:23 -0700
committerTim Chevalier <chevalier@alum.wellesley.edu>2012-07-18 18:02:07 -0700
commit3119afc6e844fea76512e45c392bdcbeeeec2c00 (patch)
tree581c2d0cdaa35439170f1c0b0ff17927cd1e048a
parentde5d5e6eebbfdd660b2587763b122bc9df3eeb8f (diff)
downloadrust-3119afc6e844fea76512e45c392bdcbeeeec2c00.tar.gz
rust-3119afc6e844fea76512e45c392bdcbeeeec2c00.zip
In resolve3, error on non-existent imports
Closes #2937
-rw-r--r--src/rustc/middle/resolve3.rs10
-rw-r--r--src/test/compile-fail/issue-2937.rs10
2 files changed, 20 insertions, 0 deletions
diff --git a/src/rustc/middle/resolve3.rs b/src/rustc/middle/resolve3.rs
index 7bbb43a14f9..3803d9634e5 100644
--- a/src/rustc/middle/resolve3.rs
+++ b/src/rustc/middle/resolve3.rs
@@ -1904,6 +1904,16 @@ class Resolver {
             }
         }
 
+        let i = import_resolution;
+        alt (i.module_target, i.value_target, i.type_target, i.impl_target) {
+          /*
+            If this name wasn't found in any of the four namespaces, it's
+            definitely unresolved
+           */
+          (none, none, none, v) if v.len() == 0 { ret Failed; }
+          _ {}
+        }
+
         assert import_resolution.outstanding_references >= 1u;
         import_resolution.outstanding_references -= 1u;
 
diff --git a/src/test/compile-fail/issue-2937.rs b/src/test/compile-fail/issue-2937.rs
new file mode 100644
index 00000000000..01fa3cbfa0a
--- /dev/null
+++ b/src/test/compile-fail/issue-2937.rs
@@ -0,0 +1,10 @@
+// error-pattern:failed to resolve imports
+// n.b. Can't use a //~ ERROR because there's a non-spanned error
+// message.
+import x = m::f;
+
+mod m {
+}
+
+fn main() {
+}
\ No newline at end of file