Skip to content

Commit e0d7a6b

Browse files
authored
fix crash on augmented-assign to print builtin (#745)
1 parent 2c64ae4 commit e0d7a6b

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

pyflakes/checker.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -1068,7 +1068,7 @@ def getNodeHandler(self, node_class):
10681068
)
10691069
return handler
10701070

1071-
def handleNodeLoad(self, node):
1071+
def handleNodeLoad(self, node, parent):
10721072
name = getNodeName(node)
10731073
if not name:
10741074
return
@@ -1093,7 +1093,6 @@ def handleNodeLoad(self, node):
10931093
continue
10941094

10951095
if name == 'print' and isinstance(binding, Builtin):
1096-
parent = self.getParent(node)
10971096
if (isinstance(parent, ast.BinOp) and
10981097
isinstance(parent.op, ast.RShift)):
10991098
self.report(messages.InvalidPrintSyntax, node)
@@ -1880,7 +1879,7 @@ def NAME(self, node):
18801879
"""
18811880
# Locate the name in locals / function / globals scopes.
18821881
if isinstance(node.ctx, ast.Load):
1883-
self.handleNodeLoad(node)
1882+
self.handleNodeLoad(node, self.getParent(node))
18841883
if (node.id == 'locals' and isinstance(self.scope, FunctionScope) and
18851884
isinstance(node._pyflakes_parent, ast.Call)):
18861885
# we are doing locals() call in current scope
@@ -2049,7 +2048,7 @@ def CLASSDEF(self, node):
20492048
self.addBinding(node, ClassDefinition(node.name, node))
20502049

20512050
def AUGASSIGN(self, node):
2052-
self.handleNodeLoad(node.target)
2051+
self.handleNodeLoad(node.target, node)
20532052
self.handleNode(node.value, node)
20542053
self.handleNode(node.target, node)
20552054

pyflakes/test/test_other.py

+4
Original file line numberDiff line numberDiff line change
@@ -2052,6 +2052,10 @@ def test_invalid_print_when_imported_from_future(self):
20522052
self.assertEqual(exc.lineno, 4)
20532053
self.assertEqual(exc.col, 0)
20542054

2055+
def test_print_augmented_assign(self):
2056+
# nonsense, but shouldn't crash pyflakes
2057+
self.flakes('print += 1')
2058+
20552059
def test_print_function_assignment(self):
20562060
"""
20572061
A valid assignment, tested for catching false positives.

0 commit comments

Comments
 (0)