Skip to content

Commit d3ca9c6

Browse files
committed
Better error message for certain classes of unresolved imports
1 parent d82d987 commit d3ca9c6

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/librustc/middle/resolve.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ use syntax::attr::{attr_metas, contains_name, attrs_contains_name};
6464
use syntax::parse::token::ident_interner;
6565
use syntax::parse::token::special_idents;
6666
use syntax::print::pprust::path_to_str;
67-
use syntax::codemap::{span, dummy_sp};
67+
use syntax::codemap::{span, dummy_sp, BytePos};
6868
use syntax::visit::{default_visitor, mk_vt, Visitor, visit_block};
6969
use syntax::visit::{visit_crate, visit_expr, visit_expr_opt};
7070
use syntax::visit::{visit_foreign_item, visit_item};
@@ -2482,6 +2482,16 @@ pub impl Resolver {
24822482
TypeNS,
24832483
name_search_type) {
24842484
Failed => {
2485+
let segment_name = self.session.str_of(name);
2486+
let module_name = self.module_to_str(search_module);
2487+
if module_name == ~"???" {
2488+
self.session.span_err(span {lo: span.lo, hi: span.lo +
2489+
BytePos(str::len(*segment_name)), expn_info:
2490+
span.expn_info}, fmt!("unresolved import. perhaps \
2491+
you forgot an 'extern mod %s'?",
2492+
*segment_name));
2493+
return Failed;
2494+
}
24852495
self.session.span_err(span, ~"unresolved name");
24862496
return Failed;
24872497
}

0 commit comments

Comments
 (0)