mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-01 22:31:47 +00:00

The unsafe fixes for the rules [unnecessary-generator-list (C400)](https://docs.astral.sh/ruff/rules/unnecessary-generator-list/#unnecessary-generator-list-c400) and [unnecessary-generator-set (C401)](https://docs.astral.sh/ruff/rules/unnecessary-generator-set/#unnecessary-generator-set-c401) used to introduce syntax errors if the argument to `list` or `set` had a trailing comma, because the fix would retain the comma after transforming the function call to a comprehension. This PR accounts for the trailing comma when replacing the end of the call with a `]` or `}`. Closes #15852
36 lines
761 B
Python
36 lines
761 B
Python
# Cannot combine with C416. Should use list comprehension here.
|
|
even_nums = list(2 * x for x in range(3))
|
|
odd_nums = list(
|
|
2 * x + 1 for x in range(3)
|
|
)
|
|
|
|
|
|
# Short-circuit case, combine with C416 and should produce x = list(range(3))
|
|
x = list(x for x in range(3))
|
|
x = list(
|
|
x for x in range(3)
|
|
)
|
|
|
|
# Strip parentheses from inner generators.
|
|
list((2 * x for x in range(3)))
|
|
list(((2 * x for x in range(3))))
|
|
list((((2 * x for x in range(3)))))
|
|
|
|
# Account for trailing comma in fix
|
|
# See https://github.com/astral-sh/ruff/issues/15852
|
|
list((0 for _ in []),)
|
|
list(
|
|
(0 for _ in [])
|
|
# some comments
|
|
,
|
|
# some more
|
|
)
|
|
|
|
|
|
# Not built-in list.
|
|
def list(*args, **kwargs):
|
|
return None
|
|
|
|
|
|
list(2 * x for x in range(3))
|
|
list(x for x in range(3))
|