diff options
| author | Corey Richardson <corey@octayn.net> | 2013-05-08 21:47:34 -0400 |
|---|---|---|
| committer | Corey Richardson <corey@octayn.net> | 2013-05-09 16:08:53 -0400 |
| commit | d3ca9c61a0685c5add1ce2115402dfc3e2f48912 (patch) | |
| tree | 1093e685f83afc0bdedda9e252aba1ae39a68ce4 | |
| parent | d82d9874a6f88e0afa021796e9efaba5b3670c31 (diff) | |
| download | rust-d3ca9c61a0685c5add1ce2115402dfc3e2f48912.tar.gz rust-d3ca9c61a0685c5add1ce2115402dfc3e2f48912.zip | |
Better error message for certain classes of unresolved imports
| -rw-r--r-- | src/librustc/middle/resolve.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs index ff002afd028..26dad202ab3 100644 --- a/src/librustc/middle/resolve.rs +++ b/src/librustc/middle/resolve.rs @@ -64,7 +64,7 @@ use syntax::attr::{attr_metas, contains_name, attrs_contains_name}; use syntax::parse::token::ident_interner; use syntax::parse::token::special_idents; use syntax::print::pprust::path_to_str; -use syntax::codemap::{span, dummy_sp}; +use syntax::codemap::{span, dummy_sp, BytePos}; use syntax::visit::{default_visitor, mk_vt, Visitor, visit_block}; use syntax::visit::{visit_crate, visit_expr, visit_expr_opt}; use syntax::visit::{visit_foreign_item, visit_item}; @@ -2482,6 +2482,16 @@ pub impl Resolver { TypeNS, name_search_type) { Failed => { + let segment_name = self.session.str_of(name); + let module_name = self.module_to_str(search_module); + if module_name == ~"???" { + self.session.span_err(span {lo: span.lo, hi: span.lo + + BytePos(str::len(*segment_name)), expn_info: + span.expn_info}, fmt!("unresolved import. perhaps \ + you forgot an 'extern mod %s'?", + *segment_name)); + return Failed; + } self.session.span_err(span, ~"unresolved name"); return Failed; } |
