diff --git a/src/librustc_typeck/check/method/confirm.rs b/src/librustc_typeck/check/method/confirm.rs index 22e4018b24fb..e81bca3c1718 100644 --- a/src/librustc_typeck/check/method/confirm.rs +++ b/src/librustc_typeck/check/method/confirm.rs @@ -314,13 +314,23 @@ impl<'a, 'gcx, 'tcx> ConfirmContext<'a, 'gcx, 'tcx> { if num_method_types == 0 { struct_span_err!(self.tcx.sess, self.span, E0035, "does not take type parameters") - .span_label(self.span, "called with unneeded type parameters") + .span_label(self.span, &"called with unneeded type parameters") .emit(); } else { - span_err!(self.tcx.sess, self.span, E0036, + struct_span_err!(self.tcx.sess, self.span, E0036, "incorrect number of type parameters given for this method: \ expected {}, found {}", - num_method_types, num_supplied_types); + num_method_types, num_supplied_types) + .span_label(self.span, + &format!("Passed {} type argument{}, expected {}", + num_supplied_types, + if num_supplied_types != 1 { + "s" + } else { + "" + }, + num_method_types)) + .emit(); } supplied_method_types = vec![self.tcx.types.err; num_method_types]; } diff --git a/src/test/compile-fail/E0036.rs b/src/test/compile-fail/E0036.rs index 35fd6e8942fe..ecb6dac66f21 100644 --- a/src/test/compile-fail/E0036.rs +++ b/src/test/compile-fail/E0036.rs @@ -20,4 +20,5 @@ fn main() { let x = Test; let v = &[0]; x.method::(v); //~ ERROR E0036 + //~| NOTE Passed 2 type arguments, expected 1 }