diff options
| author | bors <bors@rust-lang.org> | 2013-11-17 03:16:37 -0800 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-11-17 03:16:37 -0800 |
| commit | dff4f52a7285e3778e5051fedfc1e87351e72661 (patch) | |
| tree | 146b2c96aedb6ca219e089adaf0e5676cc71a5e3 | |
| parent | 66df86ae98364bd6bc29463dc52d5c9c7d2fdd7a (diff) | |
| parent | ab9e3a6652a03d6e7d4b6b9c02228174cc5ddab0 (diff) | |
| download | rust-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.rs | 12 | ||||
| -rw-r--r-- | src/test/compile-fail/trait-impl-different-num-params.rs | 2 |
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 } } |
