Include ..
suggestion if fields are all wildcards
This commit is contained in:
parent
d7307a71f5
commit
e8c87935e0
@ -1068,8 +1068,9 @@ fn e0023(
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
|
||||
// Only suggest `..` if more than one field is missing.
|
||||
if fields.len() - subpats.len() > 1 {
|
||||
// Only suggest `..` if more than one field is missing
|
||||
// or the pattern consists of all wildcards.
|
||||
if fields.len() - subpats.len() > 1 || all_wildcards {
|
||||
if subpats.is_empty() || all_wildcards {
|
||||
err.span_suggestion_verbose(
|
||||
all_fields_span,
|
||||
|
@ -36,6 +36,10 @@ help: use `_` to explicitly ignore each field
|
||||
|
|
||||
LL | TupleStruct(_, _) = TupleStruct(1, 2);
|
||||
| ^^^
|
||||
help: use `..` to ignore all fields
|
||||
|
|
||||
LL | TupleStruct(..) = TupleStruct(1, 2);
|
||||
| ^^
|
||||
|
||||
error[E0023]: this pattern has 3 fields, but the corresponding tuple variant has 2 fields
|
||||
--> $DIR/tuple_struct_destructure_fail.rs:34:5
|
||||
@ -59,6 +63,10 @@ help: use `_` to explicitly ignore each field
|
||||
|
|
||||
LL | Enum::SingleVariant(_, _) = Enum::SingleVariant(1, 2);
|
||||
| ^^^
|
||||
help: use `..` to ignore all fields
|
||||
|
|
||||
LL | Enum::SingleVariant(..) = Enum::SingleVariant(1, 2);
|
||||
| ^^
|
||||
|
||||
error[E0070]: invalid left-hand side of assignment
|
||||
--> $DIR/tuple_struct_destructure_fail.rs:40:12
|
||||
|
@ -22,6 +22,10 @@ help: use `_` to explicitly ignore each field
|
||||
|
|
||||
LL | let P(_) = U {};
|
||||
| ^
|
||||
help: use `..` to ignore all fields
|
||||
|
|
||||
LL | let P(..) = U {};
|
||||
| ^^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
@ -11,6 +11,10 @@ help: use `_` to explicitly ignore each field
|
||||
|
|
||||
LL | Color::Rgb(_, _, _) => { }
|
||||
| ^^^
|
||||
help: use `..` to ignore all fields
|
||||
|
|
||||
LL | Color::Rgb(..) => { }
|
||||
| ^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -14,6 +14,7 @@ fn main() {
|
||||
S(_) => {}
|
||||
//~^ ERROR this pattern has 1 field, but the corresponding tuple struct has 2 fields
|
||||
//~| HELP use `_` to explicitly ignore each field
|
||||
//~| HELP use `..` to ignore all fields
|
||||
}
|
||||
match S(0, 1.0) {
|
||||
S() => {}
|
||||
@ -31,6 +32,7 @@ fn main() {
|
||||
E::S(_) => {}
|
||||
//~^ ERROR this pattern has 1 field, but the corresponding tuple variant has 2 fields
|
||||
//~| HELP use `_` to explicitly ignore each field
|
||||
//~| HELP use `..` to ignore all fields
|
||||
}
|
||||
match E::S(0, 1.0) {
|
||||
E::S() => {}
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0532]: expected unit struct, unit variant or constant, found tuple variant `E::S`
|
||||
--> $DIR/pat-tuple-underfield.rs:42:9
|
||||
--> $DIR/pat-tuple-underfield.rs:44:9
|
||||
|
|
||||
LL | S(i32, f32),
|
||||
| ----------- `E::S` defined here
|
||||
@ -34,9 +34,13 @@ help: use `_` to explicitly ignore each field
|
||||
|
|
||||
LL | S(_, _) => {}
|
||||
| ^^^
|
||||
help: use `..` to ignore all fields
|
||||
|
|
||||
LL | S(..) => {}
|
||||
| ^^
|
||||
|
||||
error[E0023]: this pattern has 0 fields, but the corresponding tuple struct has 2 fields
|
||||
--> $DIR/pat-tuple-underfield.rs:19:9
|
||||
--> $DIR/pat-tuple-underfield.rs:20:9
|
||||
|
|
||||
LL | struct S(i32, f32);
|
||||
| ------------------- tuple struct defined here
|
||||
@ -54,7 +58,7 @@ LL | S(..) => {}
|
||||
| ^^
|
||||
|
||||
error[E0023]: this pattern has 1 field, but the corresponding tuple variant has 2 fields
|
||||
--> $DIR/pat-tuple-underfield.rs:26:9
|
||||
--> $DIR/pat-tuple-underfield.rs:27:9
|
||||
|
|
||||
LL | S(i32, f32),
|
||||
| ----------- tuple variant defined here
|
||||
@ -68,7 +72,7 @@ LL | E::S(x, _) => {}
|
||||
| ^^^
|
||||
|
||||
error[E0023]: this pattern has 1 field, but the corresponding tuple variant has 2 fields
|
||||
--> $DIR/pat-tuple-underfield.rs:31:9
|
||||
--> $DIR/pat-tuple-underfield.rs:32:9
|
||||
|
|
||||
LL | S(i32, f32),
|
||||
| ----------- tuple variant defined here
|
||||
@ -80,9 +84,13 @@ help: use `_` to explicitly ignore each field
|
||||
|
|
||||
LL | E::S(_, _) => {}
|
||||
| ^^^
|
||||
help: use `..` to ignore all fields
|
||||
|
|
||||
LL | E::S(..) => {}
|
||||
| ^^
|
||||
|
||||
error[E0023]: this pattern has 0 fields, but the corresponding tuple variant has 2 fields
|
||||
--> $DIR/pat-tuple-underfield.rs:36:9
|
||||
--> $DIR/pat-tuple-underfield.rs:38:9
|
||||
|
|
||||
LL | S(i32, f32),
|
||||
| ----------- tuple variant defined here
|
||||
@ -100,7 +108,7 @@ LL | E::S(..) => {}
|
||||
| ^^
|
||||
|
||||
error[E0023]: this pattern has 2 fields, but the corresponding tuple struct has 4 fields
|
||||
--> $DIR/pat-tuple-underfield.rs:48:9
|
||||
--> $DIR/pat-tuple-underfield.rs:50:9
|
||||
|
|
||||
LL | struct Point4(i32, i32, i32, i32);
|
||||
| ---------------------------------- tuple struct defined here
|
||||
|
Loading…
Reference in New Issue
Block a user