-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
Add macro checks to lints #48855
Comments
@Dylan-DPC would you like to work on this? |
So that's focusing on span_suggestion -- we need to both fix that and fix the general lint case, except for future compat lints |
In clippy we are doing this on a case-by-case basis. Do we really want to blanket ignore all lints in local expansions of external macros? |
Honestly I don't know. Future compat lints must show, but aside from that the cases where we want to still show a lint on a macro expansion is when the linted code is completely within the invocation, which can't be detected easily right now. |
@Manishearth Ye sure 👍 |
Any updates? |
@Manishearth haven't started with it. Will work on it this weekend. |
@Manishearth is there a common place where all lints are used? or i have to hunt down each lint implementation? |
they all implement What you want to do is tweak |
From @cramertj on Discord: problematic interaction with
|
Squash all lints tied to foreign macros by default This PR is a continuation of #49755 (thanks for the initial jump-start @Dylan-DPC!) and is targeted at solving #48855. This change updates the lint infrastructure to, by default, ignore all lints emitted for code that originates in a foreign macro. For example if `println!("...")` injects some idiomatic warnings these are all ignored by default. The rationale here is that for almost all lints there's no action that can be taken if the code originates from a foreign lint. Closes #48855 Closes #52483 Closes #52479
From #48385
Many of our lints trigger even when the code is within a macro defined by an external crate. They should include macro checks.
Clippy has a function for this already.
We should include this in librustc::lint somewhere, and use it for various lints. It should not be used for future compat lints.
One possible thing to do here is to work it into the lint framework itself, so that non-future-compat lints which are triggered on macro spans will not actually be emitted.
We should still have the helper function since some lints may involve multiple important spans so they need the ability to check them all.
Ideally there would be a way to turn this off, though -- in case you want to find issues in your macros. It's a tricky problem.
Willing to mentor the basic issue of importing the macro checks and applying them in most lints (or working it into the framework).
The text was updated successfully, but these errors were encountered: