about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVictor Berger <victor.berger@m4x.org>2015-08-07 12:00:46 +0200
committerVictor Berger <victor.berger@m4x.org>2015-08-07 14:18:20 +0200
commit5847ea76195d9cbe9d066418bdf44ba2a0398649 (patch)
tree675bdea0b0d1213ff3ae2b28b3e454fabcdea758
parent3d041bd46dfbd77a392228b6e4c0cb866d4404fc (diff)
Customize error messages for self glob imports.
-rw-r--r--src/librustc_resolve/resolve_imports.rs6
-rw-r--r--src/test/compile-fail/issue-8208.rs12
2 files changed, 16 insertions, 2 deletions
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs
index bab9f19bbff..5a377d2c5fe 100644
--- a/src/librustc_resolve/resolve_imports.rs
+++ b/src/librustc_resolve/resolve_imports.rs
@@ -785,7 +785,11 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> {
             // In this case, target_module == module_
             // This means we are trying to glob import a module into itself,
             // and it is a no-go
-            return ResolveResult::Indeterminate;
+            debug!("(resolving glob imports) target module is current module; giving up");
+            return ResolveResult::Failed(Some((
+                        import_directive.span,
+                        "Cannot glob-import a module into itself.".into()
+                    )));
         }
 
         for (ident, target_import_resolution) in import_resolutions.iter() {
diff --git a/src/test/compile-fail/issue-8208.rs b/src/test/compile-fail/issue-8208.rs
index 7e3f1171e25..318089b3030 100644
--- a/src/test/compile-fail/issue-8208.rs
+++ b/src/test/compile-fail/issue-8208.rs
@@ -8,7 +8,17 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use self::*; //~ ERROR: unresolved import
+use self::*; //~ ERROR: unresolved import `self::*`. Cannot glob-import a module into itself.
+
+mod foo {
+    use foo::*; //~ ERROR: unresolved import `foo::*`. Cannot glob-import a module into itself.
+
+    mod bar {
+        use super::bar::*;
+        //~^ ERROR: unresolved import `super::bar::*`. Cannot glob-import a module into itself.
+    }
+
+}
 
 fn main() {
 }