mirror of
https://github.com/davidhalter/parso.git
synced 2025-12-16 01:17:13 +08:00
Check all arguments for unparenthesized generator expressions
Previously only the first argument on the argument list checked against the generator expressions, now all argumnets are controlled.
This commit is contained in:
@@ -779,12 +779,6 @@ class _ArglistRule(SyntaxRule):
|
||||
return "Generator expression must be parenthesized"
|
||||
|
||||
def is_issue(self, node):
|
||||
first_arg = node.children[0]
|
||||
if first_arg.type == 'argument' \
|
||||
and first_arg.children[1].type in _COMP_FOR_TYPES:
|
||||
# e.g. foo(x for x in [], b)
|
||||
return len(node.children) >= 2
|
||||
else:
|
||||
arg_set = set()
|
||||
kw_only = False
|
||||
kw_unpacking_only = False
|
||||
@@ -806,6 +800,9 @@ class _ArglistRule(SyntaxRule):
|
||||
|
||||
if argument.type == 'argument':
|
||||
first = argument.children[0]
|
||||
if argument.children[1].type in _COMP_FOR_TYPES and len(node.children) >= 2:
|
||||
# a(a, b for b in c)
|
||||
return True
|
||||
if first in ('*', '**'):
|
||||
if first == '*':
|
||||
if kw_unpacking_only:
|
||||
|
||||
@@ -375,3 +375,15 @@ def test_repeated_kwarg():
|
||||
_get_error_list("f(q=1, q=2)", version="3.9")[0].message
|
||||
== "SyntaxError: keyword argument repeated: q"
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'source', [
|
||||
'a(a for a in b,)'
|
||||
'a(a for a in b, a)',
|
||||
'a(a, a for a in b)',
|
||||
'a(a, b, a for a in b, c, d)',
|
||||
]
|
||||
)
|
||||
def test_unparenthesized_genexp(source):
|
||||
assert _get_error_list(source)
|
||||
|
||||
Reference in New Issue
Block a user