Fix suggestion for nested struct patterns

This commit is contained in:
Fabian Wolff 2021-09-12 02:05:07 +02:00
parent 497ee321af
commit 2bff77d255
4 changed files with 75 additions and 8 deletions

View file

@ -0,0 +1,20 @@
// Regression test for #88403, where prefixing with an underscore was
// erroneously suggested for a nested shorthand struct field binding.
// run-rustfix
#![allow(unused)]
#![forbid(unused_variables)]
struct Inner { i: i32 }
struct Outer { o: Inner }
fn foo(Outer { o: Inner { i: _ } }: Outer) {}
//~^ ERROR: unused variable: `i`
//~| HELP: try ignoring the field
fn main() {
let s = Outer { o: Inner { i: 42 } };
let Outer { o: Inner { i: _ } } = s;
//~^ ERROR: unused variable: `i`
//~| HELP: try ignoring the field
}

View file

@ -0,0 +1,20 @@
// Regression test for #88403, where prefixing with an underscore was
// erroneously suggested for a nested shorthand struct field binding.
// run-rustfix
#![allow(unused)]
#![forbid(unused_variables)]
struct Inner { i: i32 }
struct Outer { o: Inner }
fn foo(Outer { o: Inner { i } }: Outer) {}
//~^ ERROR: unused variable: `i`
//~| HELP: try ignoring the field
fn main() {
let s = Outer { o: Inner { i: 42 } };
let Outer { o: Inner { i } } = s;
//~^ ERROR: unused variable: `i`
//~| HELP: try ignoring the field
}

View file

@ -0,0 +1,20 @@
error: unused variable: `i`
--> $DIR/ignore-nested-field-binding.rs:11:27
|
LL | fn foo(Outer { o: Inner { i } }: Outer) {}
| ^ help: try ignoring the field: `i: _`
|
note: the lint level is defined here
--> $DIR/ignore-nested-field-binding.rs:6:11
|
LL | #![forbid(unused_variables)]
| ^^^^^^^^^^^^^^^^
error: unused variable: `i`
--> $DIR/ignore-nested-field-binding.rs:17:28
|
LL | let Outer { o: Inner { i } } = s;
| ^ help: try ignoring the field: `i: _`
error: aborting due to 2 previous errors