From 4b75a5d8da6cc47fdf2a5a292889ac0a3f02e8b1 Mon Sep 17 00:00:00 2001
From: Mukilan Thiyagarajan <mukilanthiagarajan@gmail.com>
Date: Sun, 7 Dec 2014 07:21:58 +0530
Subject: [PATCH] Add compile-fail tests for #19498

---
 src/librustc/middle/resolve.rs                |  5 +++--
 src/test/compile-fail/issue-19498.rs          | 21 +++++++++++++++++++
 .../unresolved-extern-mod-suggestion.rs       |  3 ++-
 3 files changed, 26 insertions(+), 3 deletions(-)
 create mode 100644 src/test/compile-fail/issue-19498.rs

diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs
index 17dff18c3c3..f1a75f996b0 100644
--- a/src/librustc/middle/resolve.rs
+++ b/src/librustc/middle/resolve.rs
@@ -3055,8 +3055,9 @@ impl<'a> Resolver<'a> {
                  .contains_key(&name) {
             match import_resolution.type_target {
                 Some(ref target) if !target.shadowable => {
-                    let msg = format!("import `{}` conflicts with imported \
-                                       crate in this module",
+                    let msg = format!("import `{0}` conflicts with imported \
+                                       crate in this module \
+                                       (maybe you meant `use {0}::*`?)",
                                       token::get_name(name).get());
                     self.session.span_err(import_span, msg.as_slice());
                 }
diff --git a/src/test/compile-fail/issue-19498.rs b/src/test/compile-fail/issue-19498.rs
new file mode 100644
index 00000000000..02b9c42b65b
--- /dev/null
+++ b/src/test/compile-fail/issue-19498.rs
@@ -0,0 +1,21 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use self::A; //~ ERROR import `A` conflicts with existing submodule
+use self::B; //~ ERROR import `B` conflicts with existing submodule
+mod A {}
+pub mod B {}
+
+mod C {
+    use C::D; //~ ERROR import `D` conflicts with existing submodule
+    mod D {}
+}
+
+fn main() {}
diff --git a/src/test/compile-fail/unresolved-extern-mod-suggestion.rs b/src/test/compile-fail/unresolved-extern-mod-suggestion.rs
index 33d3deb8733..c2ee62c195c 100644
--- a/src/test/compile-fail/unresolved-extern-mod-suggestion.rs
+++ b/src/test/compile-fail/unresolved-extern-mod-suggestion.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 extern crate core;
-use core; //~ ERROR unresolved import (maybe you meant `core::*`?)
+use core;
+//~^ ERROR import `core` conflicts with imported crate in this module
 
 fn main() {}