-
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
Only emit useless_vec
suggestion if the macro does not contain code comments
#13911
Conversation
LL | | | ||
LL | | 1, 2, // i'm here to stay | ||
LL | | 3, 4, // but this one going away ;-; | ||
LL | | ]; // that is life anyways |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMO the help message/suggestion was a fairly important part of the lint because now it's not 100% clear what the lint wants the user to do from the diagnostic alone (use an array instead).
What about just changing the applicability to something else other than MachineApplicable
so that --fix
won't autofix it but is still shown to the user as a hint to what the fix roughly looks like and they can apply it manually by preserving the comment?
(I guess ideally the suggestion could just include the last comment directly and keep it as MachineApplicable
since all other comments except for the one after the last element are already correctly handled, but I can only think of hacky ways to do it like extending the snippet's span to the full vec![]
invocation minus 1 (just behind the ]
), and am not sure if that will always work so 🤷)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah makes sense. Gonna change the applicability instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with @y21 that it's better to only change the applicability, like you did now. (Thank you for the good suggestion!)
I would be in favor of expanding the snippet span instead. I don't really see when this should fail. Modulo macro expansion, which will probably make this a lot harder ^^.
I checked the code and don't see a super obvious way to hack it in. I don't think it's worth it to spent too much time on this, since changing the applicability already prevents automatic deletion of the comments.
So I'd say we can merge this once the comment (from my other review comment) has been updated :D
a472839
to
eef138b
Compare
@rustbot ready |
clippy_lints/src/vec.rs
Outdated
// If the `vec!` macro contains comment, better not emit any suggestion as it | ||
// would remove them. Let's just lint that the `vec!` is useless and let the user | ||
// decides what they wanna do. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This comment is outdated:
// If the `vec!` macro contains comment, better not emit any suggestion as it | |
// would remove them. Let's just lint that the `vec!` is useless and let the user | |
// decides what they wanna do. | |
// If the `vec!` macro contains comment, better not make the suggestion machine applicable as it | |
// would remove them. |
LL | | | ||
LL | | 1, 2, // i'm here to stay | ||
LL | | 3, 4, // but this one going away ;-; | ||
LL | | ]; // that is life anyways |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with @y21 that it's better to only change the applicability, like you did now. (Thank you for the good suggestion!)
I would be in favor of expanding the snippet span instead. I don't really see when this should fail. Modulo macro expansion, which will probably make this a lot harder ^^.
I checked the code and don't see a super obvious way to hack it in. I don't think it's worth it to spent too much time on this, since changing the applicability already prevents automatic deletion of the comments.
So I'd say we can merge this once the comment (from my other review comment) has been updated :D
eef138b
to
b76e042
Compare
Updated comment. @rustbot ready |
Fixes #13692.
If the
vec!
macro call contains comments, we should not provide suggestions and let users handle it however they see fit.changelog: Only emit
useless_vec
suggestion if the macro does not contain code comments