Maybe it works

Still compiling, but I think I have it!
This commit is contained in:
Theo Belaire 2015-04-25 15:11:56 -04:00
parent 168615f869
commit 69a5c379df

View file

@ -896,6 +896,7 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> {
match target {
Some(ref target) if target.shadowable != Shadowable::Always => {
use syntax::ast_map::NodeItem;
let ns_word = match namespace {
TypeNS => "type",
ValueNS => "value",
@ -904,12 +905,21 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> {
"a {} named `{}` has already been imported \
in this module", ns_word,
&token::get_name(name));
let use_id = import_resolution.id(namespace);
if let NodeItem(item) = self.resolver.ast_map.get(use_id) {
// Assert item.node is ItemUse
// I feel like this should maybe mention the type,
// as it's otherwise a bit of work to look up...
// use syntax::ast::Item;
span_note!(self.resolver.session, item.span,
"Previously import of {} `{}` here",
ns_word, token::get_name(name));
}
// Also showing the definition is reasonable?
if let Some(sp) = target.bindings.span_for_namespace(namespace) {
span_note!(self.resolver.session, sp,
"first import of {} `{}` here",
"definition of {} `{}` here",
ns_word, token::get_name(name));
} else {
span_note!(self.resolver.session, import_span, "I can't find where it was previously imported");
}
}
Some(_) | None => {}