Skip to content

Commit 98849d6

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

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
@@ -4659,9 +4659,12 @@ pub fn instantiate_path<'a, 'tcx>(fcx: &FnCtxt<'a, 'tcx>,
46594659
} else if i == type_count {
46604660
span_err!(fcx.tcx().sess, typ.span, E0087,
46614661
"too many type parameters provided: \
4662-
expected at most {} parameter(s), \
4663-
found {} parameter(s)",
4664-
type_count, data.types.len());
4662+
expected at most {} parameter{}, \
4663+
found {} parameter{}",
4664+
type_count,
4665+
if type_count == 1 {""} else {"s"},
4666+
data.types.len(),
4667+
if data.types.len() == 1 {""} else {"s"});
46654668
substs.types.truncate(space, 0);
46664669
break;
46674670
}
@@ -4684,9 +4687,11 @@ pub fn instantiate_path<'a, 'tcx>(fcx: &FnCtxt<'a, 'tcx>,
46844687
} else if i == region_count {
46854688
span_err!(fcx.tcx().sess, lifetime.span, E0088,
46864689
"too many lifetime parameters provided: \
4687-
expected {} parameter(s), found {} parameter(s)",
4690+
expected {} parameter{}, found {} parameter{}",
46884691
region_count,
4689-
data.lifetimes.len());
4692+
if region_count == 1 {""} else {"s"},
4693+
data.lifetimes.len(),
4694+
if data.lifetimes.len() == 1 {""} else {"s"});
46904695
substs.mut_regions().truncate(space, 0);
46914696
break;
46924697
}
@@ -4776,9 +4781,12 @@ pub fn instantiate_path<'a, 'tcx>(fcx: &FnCtxt<'a, 'tcx>,
47764781
let qualifier =
47774782
if desired.len() != required_len { "at least " } else { "" };
47784783
span_err!(fcx.tcx().sess, span, E0089,
4779-
"too few type parameters provided: expected {}{} parameter(s) \
4780-
, found {} parameter(s)",
4781-
qualifier, required_len, provided_len);
4784+
"too few type parameters provided: expected {}{} parameter{}, \
4785+
found {} parameter{}",
4786+
qualifier, required_len,
4787+
if required_len == 1 {""} else {"s"},
4788+
provided_len,
4789+
if provided_len == 1 {""} else {"s"});
47824790
substs.types.replace(space, repeat(fcx.tcx().types.err).take(desired.len()).collect());
47834791
return;
47844792
}
@@ -4829,9 +4837,12 @@ pub fn instantiate_path<'a, 'tcx>(fcx: &FnCtxt<'a, 'tcx>,
48294837
// Otherwise, too few were provided. Report an error and then
48304838
// use inference variables.
48314839
span_err!(fcx.tcx().sess, span, E0090,
4832-
"too few lifetime parameters provided: expected {} parameter(s), \
4833-
found {} parameter(s)",
4834-
desired.len(), provided_len);
4840+
"too few lifetime parameters provided: expected {} parameter{}, \
4841+
found {} parameter{}",
4842+
desired.len(),
4843+
if desired.len() == 1 {""} else {"s"},
4844+
provided_len,
4845+
if provided_len == 1 {""} else {"s"});
48354846

48364847
substs.mut_regions().replace(
48374848
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)