diff --git a/parso/python/normalizer.py b/parso/python/normalizer.py index 3d24b39..09f6416 100644 --- a/parso/python/normalizer.py +++ b/parso/python/normalizer.py @@ -355,6 +355,12 @@ class ErrorFinder(Normalizer): elif node.type == 'expr_stmt': for before_equal in node.children[:-2:2]: self._check_assignment(before_equal) + + augassign = node.children[1] + if augassign != '=' and augassign.type != 'annassign': # Is augassign. + if node.children[0].type in ('testlist_star_expr', 'atom'): + message = "illegal expression for augmented assignment" + self._add_syntax_error(message, node) elif node.type == 'with_item': self._check_assignment(node.children[2]) elif node.type == 'del_stmt': @@ -497,8 +503,6 @@ class ErrorFinder(Normalizer): or type_ in ('term', 'factor')): error = 'operator' - print(node) - if error is not None: message = "can't %s %s" % ("delete" if is_deletion else "assign to", error) self._add_syntax_error(message, node) diff --git a/test/test_python_errors.py b/test/test_python_errors.py index 7b20d53..943d55b 100644 --- a/test/test_python_errors.py +++ b/test/test_python_errors.py @@ -100,6 +100,10 @@ def test_indentation_errors(code, positions): 'f(x=2, y)', 'f(**x, *y)', 'f(**x, y=3, z)', + 'a, b += 3', + '(a, b) += 3', + '[a, b] += 3', + '[a, 1] += 3', # All assignment tests 'lambda a: 1 = 1', '[x for x in y] = 1',