Skip to content

Commit fbef978

Browse files
author
Nick Hamann
committed
Pluralize E0087-E0090 messages based on number of parameters.
1 parent d8d4a6a commit fbef978

File tree

2 files changed

+23
-12
lines changed

2 files changed

+23
-12
lines changed

src/librustc_typeck/check/mod.rs

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4688,9 +4688,12 @@ pub fn instantiate_path<'a, 'tcx>(fcx: &FnCtxt<'a, 'tcx>,
46884688
} else if i == type_count {
46894689
span_err!(fcx.tcx().sess, typ.span, E0087,
46904690
"too many type parameters provided: \
4691-
expected at most {} parameter(s), \
4692-
found {} parameter(s)",
4693-
type_count, data.types.len());
4691+
expected at most {} parameter{}, \
4692+
found {} parameter{}",
4693+
type_count,
4694+
if type_count == 1 {""} else {"s"},
4695+
data.types.len(),
4696+
if data.types.len() == 1 {""} else {"s"});
46944697
substs.types.truncate(space, 0);
46954698
break;
46964699
}
@@ -4713,9 +4716,11 @@ pub fn instantiate_path<'a, 'tcx>(fcx: &FnCtxt<'a, 'tcx>,
47134716
} else if i == region_count {
47144717
span_err!(fcx.tcx().sess, lifetime.span, E0088,
47154718
"too many lifetime parameters provided: \
4716-
expected {} parameter(s), found {} parameter(s)",
4719+
expected {} parameter{}, found {} parameter{}",
47174720
region_count,
4718-
data.lifetimes.len());
4721+
if region_count == 1 {""} else {"s"},
4722+
data.lifetimes.len(),
4723+
if data.lifetimes.len() == 1 {""} else {"s"});
47194724
substs.mut_regions().truncate(space, 0);
47204725
break;
47214726
}
@@ -4805,9 +4810,12 @@ pub fn instantiate_path<'a, 'tcx>(fcx: &FnCtxt<'a, 'tcx>,
48054810
let qualifier =
48064811
if desired.len() != required_len { "at least " } else { "" };
48074812
span_err!(fcx.tcx().sess, span, E0089,
4808-
"too few type parameters provided: expected {}{} parameter(s) \
4809-
, found {} parameter(s)",
4810-
qualifier, required_len, provided_len);
4813+
"too few type parameters provided: expected {}{} parameter{}, \
4814+
found {} parameter{}",
4815+
qualifier, required_len,
4816+
if required_len == 1 {""} else {"s"},
4817+
provided_len,
4818+
if provided_len == 1 {""} else {"s"});
48114819
substs.types.replace(space, repeat(fcx.tcx().types.err).take(desired.len()).collect());
48124820
return;
48134821
}
@@ -4858,9 +4866,12 @@ pub fn instantiate_path<'a, 'tcx>(fcx: &FnCtxt<'a, 'tcx>,
48584866
// Otherwise, too few were provided. Report an error and then
48594867
// use inference variables.
48604868
span_err!(fcx.tcx().sess, span, E0090,
4861-
"too few lifetime parameters provided: expected {} parameter(s), \
4862-
found {} parameter(s)",
4863-
desired.len(), provided_len);
4869+
"too few lifetime parameters provided: expected {} parameter{}, \
4870+
found {} parameter{}",
4871+
desired.len(),
4872+
if desired.len() == 1 {""} else {"s"},
4873+
provided_len,
4874+
if provided_len == 1 {""} else {"s"});
48644875

48654876
substs.mut_regions().replace(
48664877
space,

src/test/compile-fail/ufcs-qpath-missing-params.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ use std::borrow::IntoCow;
1212

1313
fn main() {
1414
<String as IntoCow>::into_cow("foo".to_string());
15-
//~^ ERROR too few type parameters provided: expected 1 parameter(s)
15+
//~^ ERROR too few type parameters provided: expected 1 parameter
1616
}

0 commit comments

Comments
 (0)