diff --git a/parso/python/normalizer.py b/parso/python/normalizer.py index ea1c339..7d59475 100644 --- a/parso/python/normalizer.py +++ b/parso/python/normalizer.py @@ -203,7 +203,8 @@ class ErrorFinder(Normalizer): params = leaf.parent if params.type == 'parameters' and params: after = params.children[params.children.index(leaf) + 1:] - after = [child for child in after if child not in (',', ')')] + after = [child for child in after + if child not in (',', ')') and not child.star_count] if len(after) == 0: self._add_syntax_error("named arguments must follow bare *", leaf) return '' diff --git a/test/test_python_errors.py b/test/test_python_errors.py index 1978b9e..62ac804 100644 --- a/test/test_python_errors.py +++ b/test/test_python_errors.py @@ -177,9 +177,11 @@ def test_future_import_first(): def test_named_argument_issues(works_not_in_py): + message = works_not_in_py.get_error_message('def foo(*, **dict): pass') message = works_not_in_py.get_error_message('def foo(*): pass') if works_not_in_py.version.startswith('2'): message works_not_in_py.assert_no_error_in_passing('def foo(*, name): pass') works_not_in_py.assert_no_error_in_passing('def foo(bar, *, name=1): pass') + works_not_in_py.assert_no_error_in_passing('def foo(bar, *, name=1, **dct): pass')