about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-11-17 03:16:37 -0800
committerbors <bors@rust-lang.org>2013-11-17 03:16:37 -0800
commitdff4f52a7285e3778e5051fedfc1e87351e72661 (patch)
tree146b2c96aedb6ca219e089adaf0e5676cc71a5e3
parent66df86ae98364bd6bc29463dc52d5c9c7d2fdd7a (diff)
parentab9e3a6652a03d6e7d4b6b9c02228174cc5ddab0 (diff)
downloadrust-dff4f52a7285e3778e5051fedfc1e87351e72661.tar.gz
rust-dff4f52a7285e3778e5051fedfc1e87351e72661.zip
auto merge of #10509 : cmr/rust/trait_name, r=alexcrichton
Rebase + fix of #10118
-rw-r--r--src/librustc/middle/typeck/check/mod.rs12
-rw-r--r--src/test/compile-fail/trait-impl-different-num-params.rs2
2 files changed, 8 insertions, 6 deletions
diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs
index f567a880db5..e46b92ae495 100644
--- a/src/librustc/middle/typeck/check/mod.rs
+++ b/src/librustc/middle/typeck/check/mod.rs
@@ -863,11 +863,13 @@ pub fn compare_impl_method(tcx: ty::ctxt,
     if impl_m.fty.sig.inputs.len() != trait_m.fty.sig.inputs.len() {
         tcx.sess.span_err(
             impl_m_span,
-            format!("method `{}` has {} parameter(s) \
-                    but the trait has {} parameter(s)",
-                    tcx.sess.str_of(trait_m.ident),
-                    impl_m.fty.sig.inputs.len(),
-                    trait_m.fty.sig.inputs.len()));
+            format!("method `{}` has {} parameter{} \
+                  but the declaration in trait `{}` has {}",
+                 tcx.sess.str_of(trait_m.ident),
+                 impl_m.fty.sig.inputs.len(),
+                 if impl_m.fty.sig.inputs.len() == 1 { "" } else { "s" },
+                 ty::item_path_str(tcx, trait_m.def_id),
+                 trait_m.fty.sig.inputs.len()));
         return;
     }
 
diff --git a/src/test/compile-fail/trait-impl-different-num-params.rs b/src/test/compile-fail/trait-impl-different-num-params.rs
index 940c1b3a237..f293644840a 100644
--- a/src/test/compile-fail/trait-impl-different-num-params.rs
+++ b/src/test/compile-fail/trait-impl-different-num-params.rs
@@ -13,7 +13,7 @@ trait foo {
 }
 impl foo for int {
     fn bar(&self) -> int {
-        //~^ ERROR method `bar` has 0 parameter(s) but the trait has 1
+        //~^ ERROR method `bar` has 0 parameters but the declaration in trait `foo::bar` has 1
         *self
     }
 }