-
Notifications
You must be signed in to change notification settings - Fork 1.6k
fix(adding_lints): usage of early vs late lint pass #13955
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
Conversation
Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @flip1995 (or someone else) some time within the next two weeks. Please see the contribution instructions for more information. Namely, in order to ensure the minimum review times lag, PR authors and assigned reviewers should ensure that the review label (
|
@y21 I have updated the paragraph. |
defaults to the recommended `LateLintPass`, but you can specify `--pass=early` if your lint | ||
only needs AST level analysis. |
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 still seems to flip the meaning, if only AST information is needed we'd still prefer it to be a late lint pass
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.
My understanding is that EarlyLintPass is a subset of LateLintPass. In what cases should we use EarlyLintPass, then? When editing this paragraph, I considered the context in which it is written. The author uses an example of an EarlyLintPass and explains that "we only have to deal with the AST and don't have to deal with the type system at all."
If this edit still seems to flip the meaning, we should consider editing other parts of the section.
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 think the new formulation is correct. Why would we prefer a LateLintPass if only AST information are required?
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.
what cases should we use EarlyLintPass, then?
It's not a strict subset, there's occasionally information that is present in the AST but not in the HIR. IIRC some information about use
declarations aren't preserved in the HIR for example
Why would we prefer a LateLintPass if only AST information are required?
Because when either a late or early pass would work there's no advantage to going with an early pass, yet lints often find themselves needing type information further down the line. Types aside many util functions are written for late passes
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.
LGTM
changelog: none
This PR fixes explaining the difference in usage between early and late lint passes in the book.