From f6481ed1c31d2a3c43fab73e58901f7c25360fcb Mon Sep 17 00:00:00 2001 From: varkor Date: Fri, 6 Sep 2019 19:21:20 +0100 Subject: [PATCH] Correct pluralisation of various diagnostic messages --- src/librustc/ty/error.rs | 4 +++- src/librustc_typeck/check/pat.rs | 33 +++++++++++++++++++++--------- src/libsyntax/ext/tt/transcribe.rs | 9 ++++++-- src/libsyntax_ext/format.rs | 2 +- 4 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/librustc/ty/error.rs b/src/librustc/ty/error.rs index fe8f94ab1d314..f67526ea4a1d9 100644 --- a/src/librustc/ty/error.rs +++ b/src/librustc/ty/error.rs @@ -200,7 +200,9 @@ impl<'tcx> ty::TyS<'tcx> { ty::Array(_, n) => { let n = tcx.lift_to_global(&n).unwrap(); match n.try_eval_usize(tcx, ty::ParamEnv::empty()) { - Some(n) => format!("array of {} elements", n).into(), + Some(n) => { + format!("array of {} element{}", n, if n != 1 { "s" } else { "" }).into() + } None => "array".into(), } } diff --git a/src/librustc_typeck/check/pat.rs b/src/librustc_typeck/check/pat.rs index 24d0659391b04..8502b89de1469 100644 --- a/src/librustc_typeck/check/pat.rs +++ b/src/librustc_typeck/check/pat.rs @@ -1098,22 +1098,35 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { fn error_scrutinee_inconsistent_length(&self, span: Span, min_len: u64, size: u64) { struct_span_err!( - self.tcx.sess, span, E0527, - "pattern requires {} elements but array has {}", - min_len, size + self.tcx.sess, + span, + E0527, + "pattern requires {} element{} but array has {}", + min_len, + if min_len != 1 { "s" } else { "" }, + size, ) - .span_label(span, format!("expected {} elements", size)) + .span_label(span, format!("expected {} element{}", size, if size != 1 { "s" } else { "" })) .emit(); } fn error_scrutinee_with_rest_inconsistent_length(&self, span: Span, min_len: u64, size: u64) { struct_span_err!( - self.tcx.sess, span, E0528, - "pattern requires at least {} elements but array has {}", - min_len, size - ) - .span_label(span, format!("pattern cannot match array of {} elements", size)) - .emit(); + self.tcx.sess, + span, + E0528, + "pattern requires at least {} element{} but array has {}", + min_len, + if min_len != 1 { "s" } else { "" }, + size, + ).span_label( + span, + format!( + "pattern cannot match array of {} element{}", + size, + if size != 1 { "s" } else { "" }, + ), + ).emit(); } fn error_scrutinee_unfixed_length(&self, span: Span) { diff --git a/src/libsyntax/ext/tt/transcribe.rs b/src/libsyntax/ext/tt/transcribe.rs index 30d5df13dcedb..23735727fe8cf 100644 --- a/src/libsyntax/ext/tt/transcribe.rs +++ b/src/libsyntax/ext/tt/transcribe.rs @@ -345,8 +345,13 @@ impl LockstepIterSize { LockstepIterSize::Constraint(r_len, _) if l_len == r_len => self, LockstepIterSize::Constraint(r_len, r_id) => { let msg = format!( - "meta-variable `{}` repeats {} times, but `{}` repeats {} times", - l_id, l_len, r_id, r_len + "meta-variable `{}` repeats {} time{}, but `{}` repeats {} time{}", + l_id, + l_len, + if l_len != 1 { "s" } else { "" }, + r_id, + r_len, + if r_len != 1 { "s" } else { "" }, ); LockstepIterSize::Contradiction(msg) } diff --git a/src/libsyntax_ext/format.rs b/src/libsyntax_ext/format.rs index e29f12c50c526..dec84c8286292 100644 --- a/src/libsyntax_ext/format.rs +++ b/src/libsyntax_ext/format.rs @@ -291,7 +291,7 @@ impl<'a, 'b> Context<'a, 'b> { &format!( "{} positional argument{} in format string, but {}", count, - if count > 1 { "s" } else { "" }, + if count != 1 { "s" } else { "" }, self.describe_num_args(), ), );