When an import fails to resolve, make the error message say
which import it actually was. This makes debugging imports like: use aa::{x, y, z} easier (for issue #2914).
This commit is contained in:
parent
5245aceba9
commit
b6aafe928d
1 changed files with 25 additions and 2 deletions
|
@ -2086,8 +2086,11 @@ impl Resolver {
|
|||
match self.resolve_import_for_module(module_, import_directive) {
|
||||
Failed => {
|
||||
// We presumably emitted an error. Continue.
|
||||
self.session.span_err(import_directive.span,
|
||||
~"failed to resolve import");
|
||||
let idents = import_directive.module_path.get();
|
||||
let msg = fmt!("failed to resolve import: %s",
|
||||
self.import_path_to_str(idents,
|
||||
*import_directive.subclass));
|
||||
self.session.span_err(import_directive.span, msg);
|
||||
}
|
||||
Indeterminate => {
|
||||
// Bail out. We'll come around next time.
|
||||
|
@ -2117,6 +2120,26 @@ impl Resolver {
|
|||
// XXX: Shouldn't copy here. We need string builder functionality.
|
||||
return result;
|
||||
}
|
||||
|
||||
fn import_directive_subclass_to_str(subclass: ImportDirectiveSubclass)
|
||||
-> ~str {
|
||||
match subclass {
|
||||
SingleImport(_target, source, _ns) => self.session.str_of(source),
|
||||
GlobImport => ~"*"
|
||||
}
|
||||
}
|
||||
|
||||
fn import_path_to_str(idents: ~[ident], subclass: ImportDirectiveSubclass)
|
||||
-> ~str {
|
||||
if idents.is_empty() {
|
||||
self.import_directive_subclass_to_str(subclass)
|
||||
} else {
|
||||
fmt!("%s::%s",
|
||||
self.idents_to_str(idents),
|
||||
self.import_directive_subclass_to_str(subclass))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to resolve the given import. The return value indicates
|
||||
* failure if we're certain the name does not exist, indeterminate if we
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue