allow trailing comma <3.6, test both postive/negative cases

This commit is contained in:
Batuhan Taskaya
2020-05-23 17:44:28 +03:00
parent fe54800cdd
commit 92396a9a16
2 changed files with 24 additions and 10 deletions

View File

@@ -800,9 +800,18 @@ 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)
if (
argument.children[1].type in _COMP_FOR_TYPES
and len(node.children) >= 2
):
if self._normalizer.version >= (3, 7):
return True
elif len(node.children) == 2 and node.children[1] == ",":
# trailing comma allowed until 3.7
pass
else:
return True
if first in ('*', '**'):
if first == '*':
if kw_unpacking_only:

View File

@@ -378,12 +378,17 @@ def test_repeated_kwarg():
@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)',
('source', 'no_errors', 'version'), [
('a(a for a in b,)', True, '3.6'),
('a(a for a in b,)', False, '3.7'),
('a(a for a in b, a)', False, None),
('a(a, a for a in b)', False, None),
('a(a, b, a for a in b, c, d)', False, None),
('a(a for a in b)', True, None),
('a((a for a in b), c)', True, None),
('a(c, (a for a in b))', True, None),
('a(a, (a for a in b), c)', True, None),
]
)
def test_unparenthesized_genexp(source):
assert _get_error_list(source)
def test_unparenthesized_genexp(source, no_errors, version):
assert bool(_get_error_list(source, version=version)) ^ no_errors