add third help hint to diagnostic error E0027
This commit is contained in:
parent
814df6e50e
commit
10b60eba9b
@ -2070,6 +2070,25 @@ fn error_unmentioned_fields(
|
||||
s = pluralize!(len),
|
||||
them = if len == 1 { "it" } else { "them" },
|
||||
),
|
||||
format!(
|
||||
"{}{}{}{}",
|
||||
prefix,
|
||||
unmentioned_fields
|
||||
.iter()
|
||||
.map(|(_, name)| {
|
||||
let field_name = name.to_string();
|
||||
format!("{field_name}: _")
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join(", "),
|
||||
if have_inaccessible_fields { ", .." } else { "" },
|
||||
postfix,
|
||||
),
|
||||
Applicability::MachineApplicable,
|
||||
);
|
||||
err.span_suggestion(
|
||||
sp,
|
||||
"or always ignore missing fields here",
|
||||
format!("{prefix}..{postfix}"),
|
||||
Applicability::MachineApplicable,
|
||||
);
|
||||
|
@ -41,6 +41,10 @@ LL | Struct { a, b } = Struct { a: 1, b: 2 };
|
||||
| ~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | Struct { a, b: _ } = Struct { a: 1, b: 2 };
|
||||
| ~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | Struct { a, .. } = Struct { a: 1, b: 2 };
|
||||
| ~~~~~~
|
||||
|
||||
|
@ -10,6 +10,10 @@ LL | Dog { age: x, name } => {}
|
||||
| ~~~~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | Dog { age: x, name: _ } => {}
|
||||
| ~~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | Dog { age: x, .. } => {}
|
||||
| ~~~~~~
|
||||
|
||||
@ -25,6 +29,10 @@ LL | Dog { name: x, age } => {}
|
||||
| ~~~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | Dog { name: x, age: _ } => {}
|
||||
| ~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | Dog { name: x, .. } => {}
|
||||
| ~~~~~~
|
||||
|
||||
@ -40,6 +48,10 @@ LL | Dog { name: x, age } => {}
|
||||
| ~~~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | Dog { name: x, age: _ } => {}
|
||||
| ~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | Dog { name: x, .. } => {}
|
||||
| ~~~~~~
|
||||
|
||||
@ -55,6 +67,10 @@ LL | Dog { name, age } => {}
|
||||
| ~~~~~~~~~~~~~
|
||||
help: if you don't care about these missing fields, you can explicitly ignore them
|
||||
|
|
||||
LL | Dog { name: _, age: _ } => {}
|
||||
| ~~~~~~~~~~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | Dog { .. } => {}
|
||||
| ~~~~~~
|
||||
|
||||
|
@ -21,6 +21,10 @@ LL | let HiddenStruct { one, two, .. } = HiddenStruct::default();
|
||||
| ~~~~~~~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | let HiddenStruct { one, two: _, .. } = HiddenStruct::default();
|
||||
| ~~~~~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | let HiddenStruct { one, .. } = HiddenStruct::default();
|
||||
| ~~~~~~
|
||||
|
||||
@ -36,6 +40,10 @@ LL | let HiddenStruct { one, hide, two } = HiddenStruct::default();
|
||||
| ~~~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | let HiddenStruct { one, hide, two: _ } = HiddenStruct::default();
|
||||
| ~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | let HiddenStruct { one, hide, .. } = HiddenStruct::default();
|
||||
| ~~~~~~
|
||||
|
||||
@ -51,6 +59,10 @@ LL | let InCrate { a, b, im_hidden } = InCrate { a: 0, b: false, im_hidden:
|
||||
| ~~~~~~~~~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | let InCrate { a, b, im_hidden: _ } = InCrate { a: 0, b: false, im_hidden: 0 };
|
||||
| ~~~~~~~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | let InCrate { a, b, .. } = InCrate { a: 0, b: false, im_hidden: 0 };
|
||||
| ~~~~~~
|
||||
|
||||
|
@ -10,6 +10,10 @@ LL | let UnstableStruct { stable, stable2, .. } = UnstableStruct::default();
|
||||
| ~~~~~~~~~~~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | let UnstableStruct { stable, stable2: _, .. } = UnstableStruct::default();
|
||||
| ~~~~~~~~~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | let UnstableStruct { stable, .. } = UnstableStruct::default();
|
||||
| ~~~~~~
|
||||
|
||||
|
@ -10,6 +10,10 @@ LL | let UnstableStruct { stable, stable2, unstable } = UnstableStruct::defa
|
||||
| ~~~~~~~~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | let UnstableStruct { stable, stable2, unstable: _ } = UnstableStruct::default();
|
||||
| ~~~~~~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | let UnstableStruct { stable, stable2, .. } = UnstableStruct::default();
|
||||
| ~~~~~~
|
||||
|
||||
@ -25,6 +29,10 @@ LL | let UnstableStruct { stable, unstable, stable2 } = UnstableStruct::defa
|
||||
| ~~~~~~~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | let UnstableStruct { stable, unstable, stable2: _ } = UnstableStruct::default();
|
||||
| ~~~~~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | let UnstableStruct { stable, unstable, .. } = UnstableStruct::default();
|
||||
| ~~~~~~
|
||||
|
||||
|
@ -24,6 +24,10 @@ LL | let Foo { present } = foo;
|
||||
| ~~~~~~~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | let Foo { present: _ } = foo;
|
||||
| ~~~~~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | let Foo { .. } = foo;
|
||||
| ~~~~~~
|
||||
|
||||
|
@ -27,6 +27,10 @@ LL | let A { x, y, b, c } = self.d;
|
||||
| ~~~~~~~~
|
||||
help: if you don't care about these missing fields, you can explicitly ignore them
|
||||
|
|
||||
LL | let A { x, y, b: _, c: _ } = self.d;
|
||||
| ~~~~~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | let A { x, y, .. } = self.d;
|
||||
| ~~~~~~
|
||||
|
||||
|
@ -32,6 +32,10 @@ LL | if let E::S { 0: a, 1: _ } = x {
|
||||
| ~~~~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | if let E::S { 0: a, 1: _ } = x {
|
||||
| ~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | if let E::S { 0: a, .. } = x {
|
||||
| ~~~~~~
|
||||
|
||||
|
@ -19,6 +19,10 @@ LL | Foo::Bar { a, aa: 1, c, b } => (),
|
||||
| ~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | Foo::Bar { a, aa: 1, c, b: _ } => (),
|
||||
| ~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | Foo::Bar { a, aa: 1, c, .. } => (),
|
||||
| ~~~~~~
|
||||
|
||||
@ -43,6 +47,10 @@ LL | Foo::Baz { bb: 1.0, a } => (),
|
||||
| ~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | Foo::Baz { bb: 1.0, a: _ } => (),
|
||||
| ~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | Foo::Baz { bb: 1.0, .. } => (),
|
||||
| ~~~~~~
|
||||
|
||||
@ -64,6 +72,10 @@ LL | Foo::Bar { a, aa: "", c, b } => (),
|
||||
| ~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | Foo::Bar { a, aa: "", c, b: _ } => (),
|
||||
| ~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | Foo::Bar { a, aa: "", c, .. } => (),
|
||||
| ~~~~~~
|
||||
|
||||
@ -85,6 +97,10 @@ LL | Foo::Baz { bb: "", a } => (),
|
||||
| ~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | Foo::Baz { bb: "", a: _ } => (),
|
||||
| ~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | Foo::Baz { bb: "", .. } => (),
|
||||
| ~~~~~~
|
||||
|
||||
|
@ -10,6 +10,10 @@ LL | let foo::Foo { visible, .. } = foo::Foo::default();
|
||||
| ~~~~~~~~~~~~~~~
|
||||
help: if you don't care about this missing field, you can explicitly ignore it
|
||||
|
|
||||
LL | let foo::Foo { visible: _, .. } = foo::Foo::default();
|
||||
| ~~~~~~~~~~~~~~~~~~
|
||||
help: or always ignore missing fields here
|
||||
|
|
||||
LL | let foo::Foo { .. } = foo::Foo::default();
|
||||
| ~~~~~~
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user