Merge pull request #117 from isidentical/repeated-kwarg-39

Show which keyword argument is repeated on 3.9+
This commit is contained in:
Dave Halter
2020-05-23 15:15:14 +02:00
committed by GitHub
2 changed files with 15 additions and 2 deletions

View File

@@ -820,7 +820,10 @@ class _ArglistRule(SyntaxRule):
if first.type == 'name':
if first.value in arg_set:
# f(x=1, x=2)
self.add_issue(first, message="keyword argument repeated")
message = "keyword argument repeated"
if self._normalizer.version >= (3, 9):
message += ": {}".format(first.value)
self.add_issue(first, message=message)
else:
arg_set.add(first.value)
else:

View File

@@ -362,6 +362,16 @@ def test_continue_in_finally():
]
)
def test_forbidden_name(template, target):
assert _get_error_list(template.format(target=target), version="3")[0].message
assert _get_error_list(template.format(target=target), version="3")
def test_repeated_kwarg():
# python 3.9+ shows which argument is repeated
assert (
_get_error_list("f(q=1, q=2)", version="3.8")[0].message
== "SyntaxError: keyword argument repeated"
)
assert (
_get_error_list("f(q=1, q=2)", version="3.9")[0].message
== "SyntaxError: keyword argument repeated: q"
)