[refurb] Do not emit diagnostic when loop variables are used outside loop body (FURB122)#15757
Merged
AlexWaygood merged 8 commits intoastral-sh:mainfrom Jan 28, 2025
Merged
Conversation
Contributor
Author
|
As the rule is now binding-sensitive, existing tests need to be rescoped. This leads to a rather big change, which I have isolated to the first commit. |
Contributor
|
| code | total | + violation | - violation | + fix | - fix |
|---|---|---|---|---|---|
| FURB122 | 2 | 0 | 2 | 0 | 0 |
refurb] Do not emit diagnostic when loop variables are used outside of the loop (FURB122)refurb] Do not emit diagnostic when loop variables are used outside loop body (FURB122)
AlexWaygood
reviewed
Jan 27, 2025
Member
AlexWaygood
left a comment
There was a problem hiding this comment.
Not a full review yet, just a couple of style nitpicks :-)
AlexWaygood
reviewed
Jan 28, 2025
Member
AlexWaygood
left a comment
There was a problem hiding this comment.
This looks good, thanks. A couple more points below, but nothing major
dcreager
added a commit
that referenced
this pull request
Jan 29, 2025
* main: [red-knot] Extend instance-attribute tests (#15808) Fix formatter warning message for `flake8-quotes` option (#15788) [`flake8-bugbear`] Exempt `NewType` calls where the original type is immutable (`B008`) (#15765) Add missing config docstrings (#15803) [`refurb`] Do not emit diagnostic when loop variables are used outside loop body (`FURB122`) (#15757) [`ruff`] Check for shadowed `map` before suggesting fix (`RUF058`) (#15790) [red-knot] Do not use explicit `knot_extensions.Unknown` declaration (#15787) Preserve quotes in generated byte strings (#15778) [minor] Simplify some `ExprStringLiteral` creation logic (#15775) Preserve quote style in generated code (#15726) Rename internal helper functions (#15771) [`airflow`] Extend airflow context parameter check for `BaseOperator.execute` (`AIR302`) (#15713) Implement tab autocomplete for `ruff config` (#15603)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Resolves #15725.
Previously,
FURB122analyzesforloops only at AST level, resulting in false positives, as shown in the linked issue.With this change, now
FURB122will also analyzeforloops at binding level. If a loop variable is used outside of the loop or shadows another variable, no diagnostic will be emitted.Two-step analysis is necessary since it's possible for
forloops not to have any bindings:Test Plan
cargo nextest runandcargo insta test.