Commit cb35b95f authored by Nick Coghlan's avatar Nick Coghlan

Teach the compiler module about augmented assignment to tuple subscripts

parent 7580146b
...@@ -1045,8 +1045,6 @@ class CodeGenerator: ...@@ -1045,8 +1045,6 @@ class CodeGenerator:
self.emit('STORE_SLICE+%d' % slice) self.emit('STORE_SLICE+%d' % slice)
def visitAugSubscript(self, node, mode): def visitAugSubscript(self, node, mode):
if len(node.subs) > 1:
raise SyntaxError, "augmented assignment to tuple is not possible"
if mode == "load": if mode == "load":
self.visitSubscript(node, 1) self.visitSubscript(node, 1)
elif mode == "store": elif mode == "store":
...@@ -1151,10 +1149,10 @@ class CodeGenerator: ...@@ -1151,10 +1149,10 @@ class CodeGenerator:
self.visit(node.expr) self.visit(node.expr)
for sub in node.subs: for sub in node.subs:
self.visit(sub) self.visit(sub)
if aug_flag:
self.emit('DUP_TOPX', 2)
if len(node.subs) > 1: if len(node.subs) > 1:
self.emit('BUILD_TUPLE', len(node.subs)) self.emit('BUILD_TUPLE', len(node.subs))
if aug_flag:
self.emit('DUP_TOPX', 2)
if node.flags == 'OP_APPLY': if node.flags == 'OP_APPLY':
self.emit('BINARY_SUBSCR') self.emit('BINARY_SUBSCR')
elif node.flags == 'OP_ASSIGN': elif node.flags == 'OP_ASSIGN':
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment