Rollup merge of #64233 - varkor:correct-pluralisation, r=estebank
Correct pluralisation of various diagnostic messages
This commit is contained in:
commit
d5caeac096
9 changed files with 42 additions and 22 deletions
|
@ -200,7 +200,9 @@ impl<'tcx> ty::TyS<'tcx> {
|
||||||
ty::Array(_, n) => {
|
ty::Array(_, n) => {
|
||||||
let n = tcx.lift_to_global(&n).unwrap();
|
let n = tcx.lift_to_global(&n).unwrap();
|
||||||
match n.try_eval_usize(tcx, ty::ParamEnv::empty()) {
|
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(),
|
None => "array".into(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1098,22 +1098,35 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||||
|
|
||||||
fn error_scrutinee_inconsistent_length(&self, span: Span, min_len: u64, size: u64) {
|
fn error_scrutinee_inconsistent_length(&self, span: Span, min_len: u64, size: u64) {
|
||||||
struct_span_err!(
|
struct_span_err!(
|
||||||
self.tcx.sess, span, E0527,
|
self.tcx.sess,
|
||||||
"pattern requires {} elements but array has {}",
|
span,
|
||||||
min_len, size
|
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();
|
.emit();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn error_scrutinee_with_rest_inconsistent_length(&self, span: Span, min_len: u64, size: u64) {
|
fn error_scrutinee_with_rest_inconsistent_length(&self, span: Span, min_len: u64, size: u64) {
|
||||||
struct_span_err!(
|
struct_span_err!(
|
||||||
self.tcx.sess, span, E0528,
|
self.tcx.sess,
|
||||||
"pattern requires at least {} elements but array has {}",
|
span,
|
||||||
min_len, size
|
E0528,
|
||||||
)
|
"pattern requires at least {} element{} but array has {}",
|
||||||
.span_label(span, format!("pattern cannot match array of {} elements", size))
|
min_len,
|
||||||
.emit();
|
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) {
|
fn error_scrutinee_unfixed_length(&self, span: Span) {
|
||||||
|
|
|
@ -345,8 +345,13 @@ impl LockstepIterSize {
|
||||||
LockstepIterSize::Constraint(r_len, _) if l_len == r_len => self,
|
LockstepIterSize::Constraint(r_len, _) if l_len == r_len => self,
|
||||||
LockstepIterSize::Constraint(r_len, r_id) => {
|
LockstepIterSize::Constraint(r_len, r_id) => {
|
||||||
let msg = format!(
|
let msg = format!(
|
||||||
"meta-variable `{}` repeats {} times, but `{}` repeats {} times",
|
"meta-variable `{}` repeats {} time{}, but `{}` repeats {} time{}",
|
||||||
l_id, l_len, r_id, r_len
|
l_id,
|
||||||
|
l_len,
|
||||||
|
if l_len != 1 { "s" } else { "" },
|
||||||
|
r_id,
|
||||||
|
r_len,
|
||||||
|
if r_len != 1 { "s" } else { "" },
|
||||||
);
|
);
|
||||||
LockstepIterSize::Contradiction(msg)
|
LockstepIterSize::Contradiction(msg)
|
||||||
}
|
}
|
||||||
|
|
|
@ -291,7 +291,7 @@ impl<'a, 'b> Context<'a, 'b> {
|
||||||
&format!(
|
&format!(
|
||||||
"{} positional argument{} in format string, but {}",
|
"{} positional argument{} in format string, but {}",
|
||||||
count,
|
count,
|
||||||
if count > 1 { "s" } else { "" },
|
if count != 1 { "s" } else { "" },
|
||||||
self.describe_num_args(),
|
self.describe_num_args(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -4,5 +4,5 @@ fn main() {
|
||||||
let _: &[i32] = [0];
|
let _: &[i32] = [0];
|
||||||
//~^ ERROR mismatched types
|
//~^ ERROR mismatched types
|
||||||
//~| expected type `&[i32]`
|
//~| expected type `&[i32]`
|
||||||
//~| expected &[i32], found array of 1 elements
|
//~| expected &[i32], found array of 1 element
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ error[E0308]: mismatched types
|
||||||
LL | let _: &[i32] = [0];
|
LL | let _: &[i32] = [0];
|
||||||
| ^^^
|
| ^^^
|
||||||
| |
|
| |
|
||||||
| expected &[i32], found array of 1 elements
|
| expected &[i32], found array of 1 element
|
||||||
| help: consider borrowing here: `&[0]`
|
| help: consider borrowing here: `&[0]`
|
||||||
|
|
|
|
||||||
= note: expected type `&[i32]`
|
= note: expected type `&[i32]`
|
||||||
|
|
|
@ -9,6 +9,6 @@ fn main() {
|
||||||
//~^ ERROR mismatched types
|
//~^ ERROR mismatched types
|
||||||
//~| expected type `std::option::Option<&[&str]>`
|
//~| expected type `std::option::Option<&[&str]>`
|
||||||
//~| found type `std::option::Option<&[&str; 1]>`
|
//~| found type `std::option::Option<&[&str; 1]>`
|
||||||
//~| expected slice, found array of 1 elements
|
//~| expected slice, found array of 1 element
|
||||||
assert_eq!(msg, 3);
|
assert_eq!(msg, 3);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ error[E0308]: mismatched types
|
||||||
--> $DIR/issue-15783.rs:8:19
|
--> $DIR/issue-15783.rs:8:19
|
||||||
|
|
|
|
||||||
LL | let msg = foo(x);
|
LL | let msg = foo(x);
|
||||||
| ^ expected slice, found array of 1 elements
|
| ^ expected slice, found array of 1 element
|
||||||
|
|
|
|
||||||
= note: expected type `std::option::Option<&[&str]>`
|
= note: expected type `std::option::Option<&[&str]>`
|
||||||
found type `std::option::Option<&[&str; 1]>`
|
found type `std::option::Option<&[&str; 1]>`
|
||||||
|
|
|
@ -10,7 +10,7 @@ error[E0529]: expected an array or slice, found `std::string::String`
|
||||||
LL | ['f', 'o', ..] => {}
|
LL | ['f', 'o', ..] => {}
|
||||||
| ^^^^^^^^^^^^^^ pattern cannot match with input type `std::string::String`
|
| ^^^^^^^^^^^^^^ pattern cannot match with input type `std::string::String`
|
||||||
|
|
||||||
error[E0527]: pattern requires 1 elements but array has 3
|
error[E0527]: pattern requires 1 element but array has 3
|
||||||
--> $DIR/match-vec-mismatch.rs:20:9
|
--> $DIR/match-vec-mismatch.rs:20:9
|
||||||
|
|
|
|
||||||
LL | [0] => {},
|
LL | [0] => {},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue