From 65df6c286c9d1b21a6d45290815671daf70fa63a Mon Sep 17 00:00:00 2001 From: Corey Richardson Date: Tue, 14 May 2013 14:19:59 -0400 Subject: [PATCH] Add span to some import resolution errors --- src/librustc/middle/resolve.rs | 18 ++++++++++-------- src/test/compile-fail/unresolved-import.rs | 10 ++++++++-- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs index d2c8320d8baf5..e191dbc2436a0 100644 --- a/src/librustc/middle/resolve.rs +++ b/src/librustc/middle/resolve.rs @@ -2058,7 +2058,8 @@ pub impl Resolver { self.resolve_single_import(module_, containing_module, target, - source); + source, + span); } GlobImport => { let span = import_directive.span; @@ -2121,7 +2122,8 @@ pub impl Resolver { module_: @mut Module, containing_module: @mut Module, target: ident, - source: ident) + source: ident, + span: span) -> ResolveResult<()> { debug!("(resolving single import) resolving `%s` = `%s::%s` from \ `%s`", @@ -2325,14 +2327,14 @@ pub impl Resolver { } if resolve_fail { - self.session.err(fmt!("unresolved import: there is no `%s` in `%s`", - *self.session.str_of(source), - self.module_to_str(containing_module))); + self.session.span_err(span, fmt!("unresolved import: there is no `%s` in `%s`", + *self.session.str_of(source), + self.module_to_str(containing_module))); return Failed; } else if priv_fail { - self.session.err(fmt!("unresolved import: found `%s` in `%s` but it is private", - *self.session.str_of(source), - self.module_to_str(containing_module))); + self.session.span_err(span, fmt!("unresolved import: found `%s` in `%s` but it is \ + private", *self.session.str_of(source), + self.module_to_str(containing_module))); return Failed; } diff --git a/src/test/compile-fail/unresolved-import.rs b/src/test/compile-fail/unresolved-import.rs index 1bd3efeadcbba..fc69c34c1183b 100644 --- a/src/test/compile-fail/unresolved-import.rs +++ b/src/test/compile-fail/unresolved-import.rs @@ -8,5 +8,11 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use foo::bar; //~ ERROR unresolved import. maybe a missing - //~^ ERROR failed to resolve import +use foo::bar; //~ ERROR unresolved import. maybe a missing `extern mod foo`? + //~^ ERROR failed to resolve import `foo::bar` +use x = bar::baz; //~ ERROR unresolved import: there is no `baz` in `bar` + //~^ ERROR failed to resolve import `bar::baz` + +mod bar { + struct bar; +}