]> git.lizzy.rs Git - rust.git/commitdiff
rustc: reduce redundant resolve errors.
authorKevin Butler <haqkrs@gmail.com>
Thu, 5 Jun 2014 21:37:52 +0000 (22:37 +0100)
committerKevin Butler <haqkrs@gmail.com>
Wed, 18 Jun 2014 00:19:22 +0000 (01:19 +0100)
18 files changed:
src/librustc/middle/resolve.rs
src/test/compile-fail-fulldeps/phase-syntax-doesnt-resolve.rs
src/test/compile-fail/import-from-missing.rs
src/test/compile-fail/import.rs
src/test/compile-fail/import2.rs
src/test/compile-fail/issue-12612.rs
src/test/compile-fail/issue-13404.rs
src/test/compile-fail/issue-1697.rs
src/test/compile-fail/issue-2123.rs
src/test/compile-fail/issue-2937.rs
src/test/compile-fail/macro-inner-attributes.rs
src/test/compile-fail/privacy2.rs
src/test/compile-fail/privacy3.rs
src/test/compile-fail/resolve_self_super_hint.rs
src/test/compile-fail/super-at-top-level.rs
src/test/compile-fail/unresolved-import.rs
src/test/compile-fail/use-from-trait-xc.rs
src/test/compile-fail/use-from-trait.rs

index 7710ef8d733b7d5a0c5f645696793b1486c632d7..5ce63b94b2499b6f9cf4fdb06c502c0f4e1184f9 100644 (file)
@@ -206,10 +206,12 @@ fn module(&self) -> Rc<Module> {
     }
 }
 
+type ErrorMessage = Option<(Span, String)>;
+
 enum ResolveResult<T> {
-    Failed,         // Failed to resolve the name.
-    Indeterminate,  // Couldn't determine due to unresolved globs.
-    Success(T)      // Successfully resolved the import.
+    Failed(ErrorMessage),   // Failed to resolve the name, optional helpful error message.
+    Indeterminate,          // Couldn't determine due to unresolved globs.
+    Success(T)              // Successfully resolved the import.
 }
 
 impl<T> ResolveResult<T> {
@@ -1485,10 +1487,12 @@ fn build_reduced_graph_for_view_item(&mut self, view_item: &ViewItem,
 
             ViewItemExternCrate(name, _, node_id) => {
                 // n.b. we don't need to look at the path option here, because cstore already did
-                for &crate_id in self.session.cstore.find_extern_mod_stmt_cnum(node_id).iter() {
+                for &crate_id in self.session.cstore
+                                     .find_extern_mod_stmt_cnum(node_id).iter() {
                     let def_id = DefId { krate: crate_id, node: 0 };
                     self.external_exports.insert(def_id);
-                    let parent_link = ModuleParentLink(parent.module().downgrade(), name);
+                    let parent_link =
+                        ModuleParentLink(parent.module().downgrade(), name);
                     let external_module = Rc::new(Module::new(parent_link,
                                                               Some(def_id),
                                                               NormalModuleKind,
@@ -1497,8 +1501,7 @@ fn build_reduced_graph_for_view_item(&mut self, view_item: &ViewItem,
                     debug!("(build reduced graph for item) found extern `{}`",
                             self.module_to_str(&*external_module));
                     parent.module().external_module_children.borrow_mut()
-                                                            .insert(name.name,
-                                                                    external_module.clone());
+                                   .insert(name.name, external_module.clone());
                     self.build_reduced_graph_for_external_crate(external_module);
                 }
             }
@@ -2029,22 +2032,21 @@ fn resolve_imports_for_module(&mut self, module: Rc<Module>) {
             let import_directive = imports.get(import_index);
             match self.resolve_import_for_module(module.clone(),
                                                  import_directive) {
-                Failed => {
-                    // We presumably emitted an error. Continue.
-                    let msg = format!("failed to resolve import `{}`",
-                                   self.import_path_to_str(
-                                       import_directive.module_path
-                                                       .as_slice(),
-                                       import_directive.subclass));
-                    self.resolve_error(import_directive.span, msg.as_slice());
-                }
-                Indeterminate => {
-                    // Bail out. We'll come around next time.
-                    break;
-                }
-                Success(()) => {
-                    // Good. Continue.
+                Failed(err) => {
+                    let (span, help) = match err {
+                        Some((span, msg)) => (span, format!(". {}", msg)),
+                        None => (import_directive.span, String::new())
+                    };
+                    let msg = format!("unresolved import `{}`{}",
+                                      self.import_path_to_str(
+                                          import_directive.module_path
+                                                          .as_slice(),
+                                          import_directive.subclass),
+                                      help);
+                    self.resolve_error(span, msg.as_slice());
                 }
+                Indeterminate => break, // Bail out. We'll come around next time.
+                Success(()) => () // Good. Continue.
             }
 
             module.resolved_import_count
@@ -2108,7 +2110,7 @@ fn resolve_import_for_module(&mut self,
                                  module_: Rc<Module>,
                                  import_directive: &ImportDirective)
                                  -> ResolveResult<()> {
-        let mut resolution_result = Failed;
+        let mut resolution_result = Failed(None);
         let module_path = &import_directive.module_path;
 
         debug!("(resolving import for module) resolving import `{}::...` in \
@@ -2126,8 +2128,10 @@ fn resolve_import_for_module(&mut self,
                                            DontUseLexicalScope,
                                            import_directive.span,
                                            ImportSearch) {
-
-                Failed => None,
+                Failed(err) => {
+                    resolution_result = Failed(err);
+                    None
+                },
                 Indeterminate => {
                     resolution_result = Indeterminate;
                     None
@@ -2405,12 +2409,10 @@ fn get_binding(this: &mut Resolver,
         }
 
         if value_result.is_unbound() && type_result.is_unbound() {
-            let msg = format!("unresolved import: there is no \
-                               `{}` in `{}`",
+            let msg = format!("There is no `{}` in `{}`",
                               token::get_ident(source),
                               self.module_to_str(&*containing_module));
-            self.resolve_error(directive.span, msg.as_slice());
-            return Failed;
+            return Failed(Some((directive.span, msg)));
         }
         let value_used_public = value_used_reexport || value_used_public;
         let type_used_public = type_used_reexport || type_used_public;
@@ -2639,21 +2641,20 @@ fn search_parent_externals(needle: Name, module: &Rc<Module>)
                                               TypeNS,
                                               name_search_type,
                                               false) {
-                Failed => {
+                Failed(None) => {
                     let segment_name = token::get_ident(name);
                     let module_name = self.module_to_str(&*search_module);
-                    if "???" == module_name.as_slice() {
-                        let span = Span {
-                            lo: span.lo,
-                            hi: span.lo + Pos::from_uint(segment_name.get().len()),
-                            expn_info: span.expn_info,
-                        };
+                    let mut span = span;
+                    let msg = if "???" == module_name.as_slice() {
+                        span.hi = span.lo + Pos::from_uint(segment_name.get().len());
 
-                        match search_parent_externals(name.name, &self.current_module) {
+                        match search_parent_externals(name.name,
+                                                     &self.current_module) {
                             Some(module) => {
                                 let path_str = self.idents_to_str(module_path);
                                 let target_mod_str = self.module_to_str(&*module);
-                                let current_mod_str = self.module_to_str(&*self.current_module);
+                                let current_mod_str =
+                                    self.module_to_str(&*self.current_module);
 
                                 let prefix = if target_mod_str == current_mod_str {
                                     "self::".to_string()
@@ -2661,24 +2662,20 @@ fn search_parent_externals(needle: Name, module: &Rc<Module>)
                                     format!("{}::", target_mod_str)
                                 };
 
-                                self.resolve_error(span, format!("unresolved import. Did you mean \
-                                                                `{}{}`?",
-                                                                prefix, path_str).as_slice());
+                                format!("Did you mean `{}{}`?", prefix, path_str)
                             },
-                            None => self.resolve_error(span, format!("unresolved import. Maybe a \
-                                                                    missing `extern crate {}`?",
-                                                                    segment_name).as_slice()),
+                            None => format!("Maybe a missing `extern crate {}`?",
+                                            segment_name),
                         }
+                    } else {
+                        format!("Could not find `{}` in `{}`.",
+                                segment_name,
+                                module_name)
+                    };
 
-                        return Failed;
-                    }
-                    self.resolve_error(span,
-                                       format!("unresolved import: could not \
-                                                find `{}` in `{}`.",
-                                               segment_name,
-                                               module_name).as_slice());
-                    return Failed;
+                    return Failed(Some((span, msg)));
                 }
+                Failed(err) => return Failed(err),
                 Indeterminate => {
                     debug!("(resolving module path for import) module \
                             resolution is indeterminate: {}",
@@ -2692,13 +2689,10 @@ fn search_parent_externals(needle: Name, module: &Rc<Module>)
                         Some(ref type_def) => {
                             match type_def.module_def {
                                 None => {
-                                    // Not a module.
-                                    self.resolve_error(
-                                        span,
-                                        format!("not a module `{}`",
-                                                token::get_ident(name))
-                                                .as_slice());
-                                    return Failed;
+                                    let msg = format!("Not a module `{}`",
+                                                        token::get_ident(name));
+
+                                    return Failed(Some((span, msg)));
                                 }
                                 Some(ref module_def) => {
                                     // If we're doing the search for an
@@ -2708,11 +2702,10 @@ fn search_parent_externals(needle: Name, module: &Rc<Module>)
                                            module_def.kind.get()) {
                                         (ImportSearch, TraitModuleKind) |
                                         (ImportSearch, ImplModuleKind) => {
-                                            self.resolve_error(
-                                                span,
-                                                "cannot import from a trait \
-                                                 or type implementation");
-                                            return Failed;
+                                            let msg =
+                                                "Cannot import from a trait or \
+                                                type implementation".to_string();
+                                            return Failed(Some((span, msg)));
                                         }
                                         (_, _) => {
                                             search_module = module_def.clone();
@@ -2738,11 +2731,9 @@ fn search_parent_externals(needle: Name, module: &Rc<Module>)
                         }
                         None => {
                             // There are no type bindings at all.
-                            self.resolve_error(
-                                span,
-                                format!("not a module `{}`",
-                                        token::get_ident(name)).as_slice());
-                            return Failed;
+                            let msg = format!("Not a module `{}`",
+                                              token::get_ident(name));
+                            return Failed(Some((span, msg)));
                         }
                     }
                 }
@@ -2782,24 +2773,22 @@ fn resolve_module_path(&mut self,
         let start_index;
         let last_private;
         match module_prefix_result {
-            Failed => {
+            Failed(None) => {
                 let mpath = self.idents_to_str(module_path);
-                match mpath.as_slice().rfind(':') {
+                let mpath = mpath.as_slice();
+                match mpath.rfind(':') {
                     Some(idx) => {
-                        self.resolve_error(
-                            span,
-                            format!("unresolved import: could not find `{}` \
-                                     in `{}`",
-                                    // idx +- 1 to account for the colons on \
-                                    // either side
-                                    mpath.as_slice().slice_from(idx + 1),
-                                    mpath.as_slice()
-                                         .slice_to(idx - 1)).as_slice());
+                        let msg = format!("Could not find `{}` in `{}`",
+                                            // idx +- 1 to account for the
+                                            // colons on either side
+                                            mpath.slice_from(idx + 1),
+                                            mpath.slice_to(idx - 1));
+                        return Failed(Some((span, msg)));
                     },
-                    None => (),
-                };
-                return Failed;
+                    None => return Failed(None),
+                }
             }
+            Failed(err) => return Failed(err),
             Indeterminate => {
                 debug!("(resolving module path for import) indeterminate; \
                         bailing");
@@ -2821,14 +2810,10 @@ fn resolve_module_path(&mut self,
                         // This is not a crate-relative path. We resolve the
                         // first component of the path in the current lexical
                         // scope and then proceed to resolve below that.
-                        let result = self.resolve_module_in_lexical_scope(
-                            module_,
-                            module_path[0]);
-                        match result {
-                            Failed => {
-                                self.resolve_error(span, "unresolved name");
-                                return Failed;
-                            }
+                        match self.resolve_module_in_lexical_scope(
+                                                            module_,
+                                                            module_path[0]) {
+                            Failed(err) => return Failed(err),
                             Indeterminate => {
                                 debug!("(resolving module path for import) \
                                         indeterminate; bailing");
@@ -2935,7 +2920,7 @@ fn resolve_item_in_lexical_scope(&mut self,
                     // No more parents. This module was unresolved.
                     debug!("(resolving item in lexical scope) unresolved \
                             module");
-                    return Failed;
+                    return Failed(None);
                 }
                 ModuleParentLink(parent_module_node, _) => {
                     match search_module.kind.get() {
@@ -2945,7 +2930,7 @@ fn resolve_item_in_lexical_scope(&mut self,
                                     scope) unresolved module: not \
                                     searching through module \
                                     parents");
-                            return Failed;
+                            return Failed(None);
                         }
                         ExternModuleKind |
                         TraitModuleKind |
@@ -2966,9 +2951,10 @@ fn resolve_item_in_lexical_scope(&mut self,
                                               namespace,
                                               PathSearch,
                                               true) {
-                Failed => {
-                    // Continue up the search chain.
-                }
+                Failed(Some((span, msg))) =>
+                    self.resolve_error(span, format!("failed to resolve. {}",
+                                                     msg)),
+                Failed(None) => (), // Continue up the search chain.
                 Indeterminate => {
                     // We couldn't see through the higher scope because of an
                     // unresolved import higher up. Bail.
@@ -3006,7 +2992,7 @@ fn resolve_module_in_lexical_scope(&mut self,
                                 debug!("!!! (resolving module in lexical \
                                         scope) module wasn't actually a \
                                         module!");
-                                return Failed;
+                                return Failed(None);
                             }
                             Some(ref module_def) => {
                                 return Success(module_def.clone());
@@ -3016,7 +3002,7 @@ fn resolve_module_in_lexical_scope(&mut self,
                     None => {
                         debug!("!!! (resolving module in lexical scope) module
                                 wasn't actually a module!");
-                        return Failed;
+                        return Failed(None);
                     }
                 }
             }
@@ -3025,10 +3011,9 @@ fn resolve_module_in_lexical_scope(&mut self,
                         bailing");
                 return Indeterminate;
             }
-            Failed => {
-                debug!("(resolving module in lexical scope) failed to \
-                        resolve");
-                return Failed;
+            Failed(err) => {
+                debug!("(resolving module in lexical scope) failed to resolve");
+                return Failed(err);
             }
         }
     }
@@ -3106,7 +3091,7 @@ fn resolve_module_prefix(&mut self,
             debug!("(resolving module prefix) resolving `super` at {}",
                    self.module_to_str(&*containing_module));
             match self.get_nearest_normal_module_parent(containing_module) {
-                None => return Failed,
+                None => return Failed(None),
                 Some(new_module) => {
                     containing_module = new_module;
                     i += 1;
@@ -3203,7 +3188,7 @@ fn resolve_name_in_module(&mut self,
         // We're out of luck.
         debug!("(resolving name in module) failed to resolve `{}`",
                token::get_name(name).get());
-        return Failed;
+        return Failed(None);
     }
 
     fn report_unresolved_imports(&mut self, module_: Rc<Module>) {
@@ -4561,8 +4546,15 @@ fn resolve_bare_identifier_pattern(&mut self, name: Ident)
             Indeterminate => {
                 fail!("unexpected indeterminate result");
             }
+            Failed(err) => {
+                match err {
+                    Some((span, msg)) => {
+                        self.resolve_error(span, format!("failed to resolve: {}",
+                                                         msg));
+                    }
+                    None => ()
+                }
 
-            Failed => {
                 debug!("(resolve bare identifier pattern) failed to find {}",
                         token::get_ident(name));
                 return BareIdentifierPatternUnresolved;
@@ -4727,17 +4719,22 @@ fn resolve_module_relative_path(&mut self,
                                        UseLexicalScope,
                                        path.span,
                                        PathSearch) {
-            Failed => {
-                let msg = format!("use of undeclared module `{}`",
-                                  self.idents_to_str(module_path_idents.as_slice()));
-                self.resolve_error(path.span, msg.as_slice());
-                return None;
-            }
+            Failed(err) => {
+                let (span, msg) = match err {
+                    Some((span, msg)) => (span, msg),
+                    None => {
+                        let msg = format!("Use of undeclared module `{}`",
+                                          self.idents_to_str(
+                                               module_path_idents.as_slice()));
+                        (path.span, msg)
+                    }
+                };
 
-            Indeterminate => {
-                fail!("indeterminate unexpected");
+                self.resolve_error(span, format!("failed to resolve. {}",
+                                                 msg.as_slice()));
+                return None;
             }
-
+            Indeterminate => fail!("indeterminate unexpected"),
             Success((resulting_module, resulting_last_private)) => {
                 containing_module = resulting_module;
                 last_private = resulting_last_private;
@@ -4798,10 +4795,19 @@ fn resolve_crate_relative_path(&mut self,
                                                  path.span,
                                                  PathSearch,
                                                  LastMod(AllPublic)) {
-            Failed => {
-                let msg = format!("use of undeclared module `::{}`",
-                                  self.idents_to_str(module_path_idents.as_slice()));
-                self.resolve_error(path.span, msg.as_slice());
+            Failed(err) => {
+                let (span, msg) = match err {
+                    Some((span, msg)) => (span, msg),
+                    None => {
+                        let msg = format!("Use of undeclared module `::{}`",
+                                          self.idents_to_str(
+                                               module_path_idents.as_slice()));
+                        (path.span, msg)
+                    }
+                };
+
+                self.resolve_error(span, format!("failed to resolve. {}",
+                                                 msg.as_slice()));
                 return None;
             }
 
@@ -4894,7 +4900,13 @@ fn resolve_item_by_identifier_in_lexical_scope(&mut self,
             Indeterminate => {
                 fail!("unexpected indeterminate result");
             }
-            Failed => {
+            Failed(err) => {
+                match err {
+                    Some((span, msg)) =>
+                        self.resolve_error(span, format!("failed to resolve. {}", msg)),
+                    None => ()
+                }
+
                 debug!("(resolving item path by identifier in lexical scope) \
                          failed to resolve {}", token::get_ident(ident));
                 return None;
@@ -4909,9 +4921,9 @@ fn with_no_errors<T>(&mut self, f: |&mut Resolver| -> T) -> T {
         rs
     }
 
-    fn resolve_error(&self, span: Span, s: &str) {
+    fn resolve_error<T: Str>(&self, span: Span, s: T) {
         if self.emit_errors {
-            self.session.span_err(span, s);
+            self.session.span_err(span, s.as_slice());
         }
     }
 
index 274fbf797e1ef96c14a337d9c34b07f82a262513..3814656282585f65a25cd9dd19a1d0e6e2087570 100644 (file)
@@ -19,7 +19,6 @@
 
 fn main() {
     macro_crate_test::foo();
-    //~^ ERROR unresolved name
-    //~^^ ERROR use of undeclared module `macro_crate_test`
-    //~^^^ ERROR unresolved name `macro_crate_test::foo`.
+    //~^ ERROR failed to resolve. Use of undeclared module `macro_crate_test`
+    //~^^ ERROR unresolved name `macro_crate_test::foo`.
 }
index ecfec6c27d9a47882d087d32e09dea6bb2c96c7f..f393442de10110aefbe849dd157bc64130746948 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -8,8 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// error-pattern:failed to resolve import
 use spam::{ham, eggs};
+//~^ ERROR unresolved import `spam::eggs`. There is no `eggs` in `spam`
 
 mod spam {
     pub fn ham() { }
index 1a6865c1ea722d529c079ce29eb735bb87350ffd..844d527a546077a1600c958deeecc6dce9e17caf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -8,9 +8,9 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// error-pattern:failed to resolve import
 use zed::bar;
 use zed::baz;
+//~^ ERROR unresolved import `zed::baz`. There is no `baz` in `zed`
 
 
 mod zed {
index 64b6b6c6f584948416eca76281285268f59b0f3d..f674d19ca5c9a8b6055388ce1fdb33e12a86f2ed 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -8,8 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use baz::zed::bar;  //~ ERROR unresolved import
-//~^ ERROR failed to resolve import
+use baz::zed::bar;
+//~^ ERROR unresolved import `baz::zed::bar`. Could not find `zed` in `baz`.
 
 
 mod baz {}
index 9d6eb42567893e382c0b529d791bdc90a645006f..ee998e57c56c9ac806276e5bc28da356fc6c6c6e 100644 (file)
@@ -16,8 +16,7 @@
 
 mod test {
     use bar::foo;
-    //~^ ERROR: unresolved import
-    //~^^ ERROR: failed to resolve import
+    //~^ ERROR unresolved import `bar::foo`. Maybe a missing `extern crate bar`?
 }
 
 fn main() {}
index 2ce502ee8dbb3fb62d35aff0ac001ea2ecf72c79..355be1562df2bdb555c5acaff7d0ee4d76ce5283 100644 (file)
@@ -10,8 +10,7 @@
 
 use a::f;
 use b::f;
-//~^ ERROR: unresolved import
-//~^^ ERROR: failed to resolve import
+//~^ ERROR: unresolved import `b::f`. There is no `f` in `b`
 
 mod a { pub fn f() {} }
 mod b { }
index 84ff07facee5aa0c6c6b5be8827d9caf28d4e97c..46d9a558d9ea973bf8b6e3c75a45e5680b334c1b 100644 (file)
@@ -12,8 +12,6 @@
 
 #![feature(globs)]
 
-use unresolved::*; //~ ERROR unresolved import. Maybe a missing
-//~^ ERROR failed to resolve import
+use unresolved::*; //~ ERROR unresolved import `unresolved::*`. Maybe a missing `extern crate unres
 
-fn main() {
-}
+fn main() {}
index 6d617d338ed941a3f031b9856f1b7baad62a0d6e..335012cedb84c1335e1e1136cfddbf41cdda44fb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -8,11 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use x = m::f; //~ ERROR failed to resolve import
-              //~^ unresolved import: there is no `f` in `m`
+use x = m::f; //~ ERROR unresolved import `m::f`. There is no `f` in `m`
 
-mod m {
-}
+mod m {}
 
-fn main() {
-}
+fn main() {}
index b225c5496e24978c56511f048dc7ce3c972679d5..335012cedb84c1335e1e1136cfddbf41cdda44fb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -8,11 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use x = m::f; //~ ERROR failed to resolve import
-              //~^ ERROR unresolved import: there is no `f` in `m`
+use x = m::f; //~ ERROR unresolved import `m::f`. There is no `f` in `m`
 
-mod m {
-}
+mod m {}
 
-fn main() {
-}
+fn main() {}
index ae804ea7ece409251ad952111d03ca86bf64f791..3e731a2d2fed4b3e32ee83d5f682278d1ec5e5ba 100644 (file)
@@ -25,9 +25,8 @@ pub fn bar() { })
 #[qux]
 fn main() {
     a::bar();
-    //~^ ERROR use of undeclared module `a`
-    //~^^ ERROR unresolved name
-    //~^^^ ERROR unresolved name `a::bar`
+    //~^ ERROR failed to resolve. Use of undeclared module `a`
+    //~^^ ERROR unresolved name `a::bar`
     b::bar();
 }
 
index df4e401dfa53fd0d7d7989c3cc16f14a7481a75e..5a5b6eb8436d71d62a9d83e240930248d3bac1d4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -24,14 +24,13 @@ mod glob {
 pub fn foo() {}
 
 fn test1() {
-    use bar::foo; //~ ERROR: unresolved import
-    //~^ ERROR: failed to resolve
+    use bar::foo;
+    //~^ ERROR unresolved import `bar::foo`. There is no `foo` in `bar`
 }
 
 fn test2() {
     use bar::glob::foo;
-    //~^ ERROR: there is no
-    //~^^ ERROR: failed to resolve
+    //~^ ERROR unresolved import `bar::glob::foo`. There is no `foo` in `bar::glob`
 }
 
 #[start] fn main(_: int, _: **u8) -> int { 3 }
index f8d8ba2ab1aa389b26513dce91102b72f9c7cba7..6898a0cde17f569854427ddfc1bf16357dd5c135 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -25,8 +25,8 @@ fn gpriv() {}
 pub fn foo() {}
 
 fn test1() {
-    use bar::gpriv; //~ ERROR: unresolved import
-    //~^ ERROR: failed to resolve
+    use bar::gpriv;
+    //~^ ERROR unresolved import `bar::gpriv`. There is no `gpriv` in `bar`
     gpriv();
 }
 
index f900d3a74ed905d567b735b374adf6dece8db614..ed143fdff687f1098c884bcd077446c1d591938a 100644 (file)
 mod a {
     extern crate collections;
     use collections::HashMap;
-    //~^ ERROR unresolved import. Did you mean `self::collections`?
-    //~^^ ERROR failed to resolve import `collections::HashMap`
-
+//~^ ERROR unresolved import `collections::HashMap`. Did you mean `self::collections`?
     mod b {
         use collections::HashMap;
-//~^ ERROR unresolved import. Did you mean `a::collections`?
-//~^^ ERROR failed to resolve import `collections::HashMap`
+//~^ ERROR unresolved import `collections::HashMap`. Did you mean `a::collections`?
         mod c {
             use collections::HashMap;
-//~^ ERROR unresolved import. Did you mean `a::collections`?
-//~^^ ERROR failed to resolve import `collections::HashMap`
+//~^ ERROR unresolved import `collections::HashMap`. Did you mean `a::collections`?
             mod d {
                 use collections::HashMap;
-//~^ ERROR unresolved import. Did you mean `a::collections`
-//~^^ ERROR failed to resolve import `collections::HashMap`
+//~^ ERROR unresolved import `collections::HashMap`. Did you mean `a::collections`?
             }
         }
     }
index 7176d5f92f9a15587a74129ac43fd97b5e6d44a1..309b6773f604ef5a3a223b4a060d3f2b5b96cd7f 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use super::f; //~ ERROR failed to resolve import
+use super::f; //~ ERROR unresolved import `super::f`
 
 fn main() {
 }
index a614ed109d872fee76b1b6cfe47952272b4b3f00..b5dcd5d165d4c0477cf0caab38b284569f636db7 100644 (file)
@@ -8,10 +8,9 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use foo::bar; //~ ERROR unresolved import. Maybe a missing `extern crate 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`
+use foo::bar; //~ ERROR unresolved import `foo::bar`. Maybe a missing `extern crate foo`?
+
+use x = bar::baz; //~ ERROR unresolved import `bar::baz`. There is no `baz` in `bar`
 
 mod bar {
     struct bar;
index d45387ed1a25bc42dbd6c8206c75231e3dfee611..8e197b901e610b5a3395756c7a0ed76a89b050ec 100644 (file)
 
 extern crate use_from_trait_xc;
 
-use use_from_trait_xc::Trait::foo;  //~ ERROR cannot import from a trait or type implementation
-//~^ ERROR failed to resolve import
-use use_from_trait_xc::Foo::new;    //~ ERROR cannot import from a trait or type implementation
-//~^ ERROR failed to resolve import
+use use_from_trait_xc::Trait::foo;
+//~^ ERROR unresolved import `use_from_trait_xc::Trait::foo`. Cannot import from a trait or type imp
 
-fn main() {
-}
+use use_from_trait_xc::Foo::new;
+//~^ ERROR unresolved import `use_from_trait_xc::Foo::new`. Cannot import from a trait or type imple
+
+fn main() {}
index 8f8d96f8024e7c2353fe28a895af37b582fb40a4..c9eea3c5df255a05af6c61dad67b9397b8aaab52 100644 (file)
@@ -8,10 +8,10 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use Trait::foo;  //~ ERROR cannot import from a trait or type implementation
-//~^ ERROR failed to resolve import
-use Foo::new;    //~ ERROR cannot import from a trait or type implementation
-//~^ ERROR failed to resolve import
+use Trait::foo;
+//~^ ERROR unresolved import `Trait::foo`. Cannot import from a trait or type implementation
+use Foo::new;
+//~^ ERROR unresolved import `Foo::new`. Cannot import from a trait or type implementation
 
 pub trait Trait {
     fn foo();