about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_resolve/resolve_imports.rs14
-rw-r--r--src/test/compile-fail/unresolved-import.rs11
2 files changed, 17 insertions, 8 deletions
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs
index 622d705485e..90c17866583 100644
--- a/src/librustc_resolve/resolve_imports.rs
+++ b/src/librustc_resolve/resolve_imports.rs
@@ -588,18 +588,16 @@ impl<'a, 'b:'a> ImportResolver<'a, 'b> {
             Success(module) => module,
             Indeterminate => return Indeterminate,
             Failed(err) => {
-                let self_module = self.current_module.clone();
+                let self_module = self.module_map[&self.current_module.normal_ancestor_id.unwrap()];
 
                 let resolve_from_self_result = self.resolve_module_path_from_root(
                     &self_module, &module_path, 0, Some(span));
 
-                return match resolve_from_self_result {
-                    Success(_) => {
-                        let msg = format!("Did you mean `self::{}`?",
-                                          &names_to_string(module_path));
-                        Failed(Some((span, msg)))
-                    },
-                    _ => Failed(err),
+                return if let Success(_) = resolve_from_self_result {
+                    let msg = format!("Did you mean `self::{}`?", &names_to_string(module_path));
+                    Failed(Some((span, msg)))
+                } else {
+                    Failed(err)
                 };
             },
         };
diff --git a/src/test/compile-fail/unresolved-import.rs b/src/test/compile-fail/unresolved-import.rs
index 6421599cacb..0a9a4375697 100644
--- a/src/test/compile-fail/unresolved-import.rs
+++ b/src/test/compile-fail/unresolved-import.rs
@@ -44,3 +44,14 @@ mod m {
     use MyEnum::*; //~ ERROR unresolved import `MyEnum::*` [E0432]
                    //~^ Did you mean `self::MyEnum`?
 }
+
+mod items {
+    enum Enum {
+        Variant
+    }
+
+    use Enum::*; //~ ERROR unresolved import `Enum::*` [E0432]
+                 //~^ Did you mean `self::Enum`?
+
+    fn item() {}
+}