From 037456a593d282d039a4df0de3aebdd72157bb74 Mon Sep 17 00:00:00 2001 From: Nick Hamann Date: Wed, 3 Jun 2015 01:34:39 -0500 Subject: [PATCH] Make E0201 detect when duplicate function is a method. --- src/librustc_typeck/collect.rs | 6 +++++- src/librustc_typeck/diagnostics.rs | 2 +- src/test/compile-fail/impl-duplicate-methods.rs | 2 +- src/test/compile-fail/issue-8153.rs | 2 +- src/test/compile-fail/method-macro-backtrace.rs | 2 +- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs index 41b3be46c0d8..be2774f46d91 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 aa3af2cc5fba..bbbb7b1db5c4 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 f2e4eb1d253e..6201d9862bb6 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 cce451498acd..ea7224939ce5 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 5a12c8e0bbe5..c9ef2df8e132 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() { }