-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
[refurb
] Do not emit diagnostic when loop variables are used outside loop body (FURB122
)
#15757
Conversation
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. |
|
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
)
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.
Not a full review yet, just a couple of style nitpicks :-)
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 looks good, thanks. A couple more points below, but nothing major
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.
Thanks!
* 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)
Summary
Resolves #15725.
Previously,
FURB122
analyzesfor
loops only at AST level, resulting in false positives, as shown in the linked issue.With this change, now
FURB122
will also analyzefor
loops 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
for
loops not to have any bindings:Test Plan
cargo nextest run
andcargo insta test
.