diff options
| -rw-r--r-- | src/librustc_resolve/resolve_imports.rs | 16 | ||||
| -rw-r--r-- | src/test/compile-fail/unresolved-import.rs | 9 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index 875d6745f6b..622d705485e 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -587,7 +587,21 @@ impl<'a, 'b:'a> ImportResolver<'a, 'b> { let module = match module_result { Success(module) => module, Indeterminate => return Indeterminate, - Failed(err) => return Failed(err), + Failed(err) => { + let self_module = self.current_module.clone(); + + 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), + }; + }, }; let (name, value_result, type_result) = match directive.subclass { diff --git a/src/test/compile-fail/unresolved-import.rs b/src/test/compile-fail/unresolved-import.rs index d1254f3f524..6421599cacb 100644 --- a/src/test/compile-fail/unresolved-import.rs +++ b/src/test/compile-fail/unresolved-import.rs @@ -35,3 +35,12 @@ mod food { } } } + +mod m { + enum MyEnum { + MyVariant + } + + use MyEnum::*; //~ ERROR unresolved import `MyEnum::*` [E0432] + //~^ Did you mean `self::MyEnum`? +} |
