about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNick Hamann <nick@wabbo.org>2015-06-03 01:34:39 -0500
committerNick Hamann <nick@wabbo.org>2015-06-03 01:34:39 -0500
commit037456a593d282d039a4df0de3aebdd72157bb74 (patch)
tree9d9a7762ce992425bf2ccb951c107a86ed47f28b /src
parentf1db9cd7c3f9612c4d5d594fd81bf4ca1e721540 (diff)
downloadrust-037456a593d282d039a4df0de3aebdd72157bb74.tar.gz
rust-037456a593d282d039a4df0de3aebdd72157bb74.zip
Make E0201 detect when duplicate function is a method.
Diffstat (limited to 'src')
-rw-r--r--src/librustc_typeck/collect.rs6
-rw-r--r--src/librustc_typeck/diagnostics.rs2
-rw-r--r--src/test/compile-fail/impl-duplicate-methods.rs2
-rw-r--r--src/test/compile-fail/issue-8153.rs2
-rw-r--r--src/test/compile-fail/method-macro-backtrace.rs2
5 files changed, 9 insertions, 5 deletions
diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs
index 41b3be46c0d..be2774f46d9 100644
--- a/src/librustc_typeck/collect.rs
+++ b/src/librustc_typeck/collect.rs
@@ -752,7 +752,11 @@ fn convert_methods<'a,'tcx,'i,I>(ccx: &CrateCtxt<'a, 'tcx>,
     let mut seen_methods = FnvHashSet();
     for (sig, id, ident, vis, span) in methods {
         if !seen_methods.insert(ident.name) {
-            span_err!(tcx.sess, span, E0201, "duplicate associated function");
+            let fn_desc = match sig.explicit_self.node {
+                ast::SelfStatic => "associated function",
+                _               => "method",
+            };
+            span_err!(tcx.sess, span, E0201, "duplicate {}", fn_desc);
         }
 
         convert_method(ccx,
diff --git a/src/librustc_typeck/diagnostics.rs b/src/librustc_typeck/diagnostics.rs
index aa3af2cc5fb..bbbb7b1db5c 100644
--- a/src/librustc_typeck/diagnostics.rs
+++ b/src/librustc_typeck/diagnostics.rs
@@ -901,7 +901,7 @@ trait Baz {
 impl Baz for Foo {
     fn baz(&self) -> bool { true }
 
-    // error: duplicate associated function
+    // error: duplicate method
     fn baz(&self) -> bool { self.0 > 5 }
 }
 ```
diff --git a/src/test/compile-fail/impl-duplicate-methods.rs b/src/test/compile-fail/impl-duplicate-methods.rs
index f2e4eb1d253..6201d9862bb 100644
--- a/src/test/compile-fail/impl-duplicate-methods.rs
+++ b/src/test/compile-fail/impl-duplicate-methods.rs
@@ -11,7 +11,7 @@
 struct Foo;
 impl Foo {
     fn orange(&self){}
-    fn orange(&self){}   //~ ERROR duplicate associated function
+    fn orange(&self){}   //~ ERROR duplicate method
 }
 
 fn main() {}
diff --git a/src/test/compile-fail/issue-8153.rs b/src/test/compile-fail/issue-8153.rs
index cce451498ac..ea7224939ce 100644
--- a/src/test/compile-fail/issue-8153.rs
+++ b/src/test/compile-fail/issue-8153.rs
@@ -18,7 +18,7 @@ trait Bar {
 
 impl Bar for Foo {
     fn bar(&self) -> isize {1}
-    fn bar(&self) -> isize {2} //~ ERROR duplicate associated function
+    fn bar(&self) -> isize {2} //~ ERROR duplicate method
 }
 
 fn main() {
diff --git a/src/test/compile-fail/method-macro-backtrace.rs b/src/test/compile-fail/method-macro-backtrace.rs
index 5a12c8e0bbe..c9ef2df8e13 100644
--- a/src/test/compile-fail/method-macro-backtrace.rs
+++ b/src/test/compile-fail/method-macro-backtrace.rs
@@ -29,7 +29,7 @@ impl S {
 
     // Cause an error. It shouldn't have any macro backtrace frames.
     fn bar(&self) { }
-    fn bar(&self) { } //~ ERROR duplicate associated function
+    fn bar(&self) { } //~ ERROR duplicate method
 }
 
 fn main() { }