-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"Unused variable" warning gives incorrect suggestion when binding fields of struct-like variants #47390
Comments
The code to do so needs to account for cases where
instead of
In the suggestion there're four cases: we need to add |
Just an idea: what about suggesting |
Already reported in #46866 |
Closed #46866 in favor of this as it had less discussion. |
I prefer the output I stated, mainly because it could introduce the concept to people, but if somebody implements that suggestion instead, I would gladly accept it. It might be even better if we suggested both alternatives, but that might be too noisy. |
This would be nontrivial (although probably not difficult) to implement compared to the |
In e4b1a79 (rust-lang#47922), we corrected erroneous suggestions for unused shorthand field pattern bindings, suggesting `field: _` where the previous suggestion of `_field` wouldn't even have compiled (rust-lang#47390). Soon, it was revealed that this was insufficient (rust-lang#50303), and the fix was extended to references, slices, &c. (rust-lang#50327) But even this proved inadequate, as the erroneous suggestions were still being issued for patterns in local (`let`) bindings (rust-lang#50804). Here, we yank the shorthand-detection and variable/node registration code into a new common function that can be called while visiting both match arms and `let` bindings. Resolves rust-lang#50804.
…ed_field_pattern_3_straight_to_video, r=estebank in which the unused shorthand field pattern debacle/saga continues In e4b1a79 (rust-lang#47922), we corrected erroneous suggestions for unused shorthand field pattern bindings, suggesting `field: _` where the previous suggestion of `_field` wouldn't even have compiled (rust-lang#47390). Soon, it was revealed that this was insufficient (rust-lang#50303), and the fix was extended to references, slices, &c. (rust-lang#50327) But even this proved inadequate, as the erroneous suggestions were still being issued for patterns in local (`let`) bindings (rust-lang#50804). Here, we yank the shorthand-detection and variable/node registration code into a new common function that can be called while visiting both match arms and `let` bindings. Resolves rust-lang#50804. r? @estebank
Here's a short example:
This produces the warning:
But changing it to
_field
is an error because that's not the name of the field. The warning should probably suggest to useEnum::Variant {..}
instead.This also occurs in explicit match statements and irrefutable let patterns – probably anywhere you can bind a field of a struct-like variant.
The text was updated successfully, but these errors were encountered: