-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
Re-write shadow lints #7338
Re-write shadow lints #7338
Conversation
r? @llogiq (rust-highfive has picked a reviewer for you, use r? to override) |
About recategorizing: I think we should have some kind of shadow lint on by default as it is a source of bugs. I thought a while ago that we could have a more permissive shadow lint that only lints when the two bindings are unrelated and have the same type. It's more likely you'll get a compiler error than a bug if you confuse two bindings with different types. Maybe you can try this variant? |
I like both this simplification and @mikerite's idea of only linting on same-type shadows. It still should be either a pedantic or restriction lint. And perhaps we could reinstate the |
I can imagine the same-type lint would be more accurate. Not so much for Clippy since we keep descending the HIR and shadowing Note there is yet another suggestion #3433 for a new shadow lint. I would call that one Here's another idea. We could have one lint called
|
The problem with this config usage is that it's one-size-fits all and there is no way to allow(shadow) partially. |
Can you give an example? The config seems to give enough control to me. But maybe I need to explain it... The After this PR, you should be able to |
How do you configure the items where the lints apply or not? |
You can do |
But what if I want to allow only some variants in one part of the code and other variants elsewhere? |
I guess that level of tweaking just doesn't seem valuable to me. But I understand it would be a slight loss of functionality and that could frustrate users. |
☔ The latest upstream changes (presumably #7604) made this pull request unmergeable. Please resolve the merge conflicts. |
@camsteffen any news on this PR? What's your plan going forward? |
@llogiq thanks for the ping. This has been in the back of my mind. If it's okay with you, I would like to make the shadow lints restriction (just move shadow_unrelated) and leave a possible allow-by-default lint to a future enhancement. |
4ad6803
to
6462ad2
Compare
2665fb1
to
fd942b6
Compare
☔ The latest upstream changes (presumably #7673) made this pull request unmergeable. Please resolve the merge conflicts. |
r=me after rebase |
@bors r=llogic |
📌 Commit ac5b02d has been approved by |
Re-write shadow lints changelog: Move shadow_unrelated to restriction changelog: The shadow lints find a lot more shadows and are not limited to certain patterns Drastically simplifies the implementation. Catches a lot more cases. I removed the "initialization happens here" note. It is not helpful IMO. Closes #318 Fixes #2890 Fixes #6563 Fixes #7588 Fixes #7620
💔 Test failed - checks-action_test |
@bors r=llogic |
📌 Commit a17359c has been approved by |
☀️ Test successful - checks-action_dev_test, checks-action_remark_test, checks-action_test |
changelog: Move shadow_unrelated to restriction
changelog: The shadow lints find a lot more shadows and are not limited to certain patterns
Drastically simplifies the implementation. Catches a lot more cases.
I removed the "initialization happens here" note. It is not helpful IMO.
Closes #318
Fixes #2890
Fixes #6563
Fixes #7588
Fixes #7620