Update E0089 to new error format

This commit is contained in:
zjhmale 2016-08-29 22:31:08 +08:00
parent 86dde9bbda
commit 01083baec2
2 changed files with 15 additions and 9 deletions

View file

@ -4427,14 +4427,18 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
// use inference variables instead of the provided types.
*segment = None;
} else if !(can_omit && types.len() == 0) && types.len() < required_len {
let qualifier =
if type_defs.len() != required_len { "at least " } else { "" };
span_err!(self.tcx.sess, span, E0089,
"too few type parameters provided: \
expected {}{}, found {}",
qualifier,
count(required_len),
count(types.len()));
let adjust = |len| if len > 1 { "parameters" } else { "parameter" };
let required_param_str = adjust(required_len);
let actual_param_str = adjust(types.len());
struct_span_err!(self.tcx.sess, span, E0089,
"too few type parameters provided: \
expected {} {}, found {} {}",
count(required_len),
required_param_str,
count(types.len()),
actual_param_str)
.span_label(span, &format!("expected {} type {}", required_len, required_param_str))
.emit();
}
if !bindings.is_empty() {

View file

@ -11,5 +11,7 @@
fn foo<T, U>() {}
fn main() {
foo::<f64>(); //~ ERROR E0089
foo::<f64>();
//~^ ERROR E0089
//~| NOTE expected 2 type parameters
}