mirror of
https://github.com/astral-sh/ruff.git
synced 2025-11-01 12:25:10 +00:00
[pylint] Fix PLC1802 autofix creating a syntax error and mark autofix as unsafe if there's comments in the len call (#18836)
<!--
Thank you for contributing to Ruff/ty! To help us out with reviewing,
please consider the following:
- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title? (Please prefix
with `[ty]` for ty pull
requests.)
- Does this pull request include references to any relevant issues?
-->
## Summary
I've also found another bug while fixing this, where the diagnostic
would not trigger if the `len` call argument variable was shadowed. This
fixed a few false negatives in the test cases.
Example:
```python
fruits = []
fruits = []
if len(fruits): # comment
...
```
Fixes #18811
Fixes #18812
<!-- What's the purpose of the change? What does it do, and why? -->
## Test Plan
Add regression test
<!-- How was it tested? -->
---------
Co-authored-by: Charlie Marsh <crmarsh416@gmail.com>
This commit is contained in:
parent
cfec89e8c3
commit
06a78d0bd0
3 changed files with 154 additions and 10 deletions
|
|
@ -168,7 +168,7 @@ def github_issue_1879():
|
|||
def function_returning_function(r):
|
||||
return function_returning_generator(r)
|
||||
|
||||
assert len(function_returning_list(z)) # [PLC1802] differs from pylint
|
||||
assert len(function_returning_list(z)) # [PLC1802] differs from pylint
|
||||
assert len(function_returning_int(z))
|
||||
# This should raise a PLC1802 once astroid can infer it
|
||||
# See https://github.com/pylint-dev/pylint/pull/3821#issuecomment-743771514
|
||||
|
|
@ -196,7 +196,7 @@ def f(cond:bool):
|
|||
def g(cond:bool):
|
||||
x = [1,2,3]
|
||||
if cond:
|
||||
x = [4,5,6]
|
||||
x = [4,5,6]
|
||||
if len(x): # this should be addressed
|
||||
print(x)
|
||||
del x
|
||||
|
|
@ -236,3 +236,15 @@ def j():
|
|||
# regression tests for https://github.com/astral-sh/ruff/issues/14690
|
||||
bool(len(ascii(1)))
|
||||
bool(len(sorted("")))
|
||||
|
||||
# regression tests for https://github.com/astral-sh/ruff/issues/18811
|
||||
fruits = []
|
||||
if(len)(fruits):
|
||||
...
|
||||
|
||||
# regression tests for https://github.com/astral-sh/ruff/issues/18812
|
||||
fruits = []
|
||||
if len(
|
||||
fruits # comment
|
||||
):
|
||||
...
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue