diff options
author | Stefan Behnel <stefan_ml@behnel.de> | 2014-08-11 22:05:05 +0200 |
---|---|---|
committer | Stefan Behnel <stefan_ml@behnel.de> | 2014-08-11 22:05:05 +0200 |
commit | 749af0fa87c0ec6acb62a1f62e7f3b19c18057da (patch) | |
tree | 326e596fe423a217eb8a742367b363adefbfa3e6 /Cython/Compiler/ParseTreeTransforms.py | |
parent | e3036318bd208870902f23d0b7716aff71bcc67e (diff) | |
download | cython-749af0fa87c0ec6acb62a1f62e7f3b19c18057da.tar.gz |
simplify WithTargetAssignmentStatNode and make it more robust against replacements of the context manager node; undo node.result() checking as it broke TempNode's disposal code
Diffstat (limited to 'Cython/Compiler/ParseTreeTransforms.py')
-rw-r--r-- | Cython/Compiler/ParseTreeTransforms.py | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/Cython/Compiler/ParseTreeTransforms.py b/Cython/Compiler/ParseTreeTransforms.py index 2c4b0cbb5..a4c67e486 100644 --- a/Cython/Compiler/ParseTreeTransforms.py +++ b/Cython/Compiler/ParseTreeTransforms.py @@ -1220,20 +1220,19 @@ class WithTransform(CythonTransform, SkipDeclarations): self.visitchildren(node, 'body') pos = node.pos body, target, manager = node.body, node.target, node.manager - node.enter_call = ExprNodes.ProxyNode(ExprNodes.SimpleCallNode( + node.enter_call = ExprNodes.SimpleCallNode( pos, function=ExprNodes.AttributeNode( pos, obj=ExprNodes.CloneNode(manager), attribute=EncodedString('__enter__'), is_special_lookup=True), args=[], - is_temp=True)) + is_temp=True) + if target is not None: body = Nodes.StatListNode( pos, stats=[ Nodes.WithTargetAssignmentStatNode( - pos, lhs=target, - rhs=ResultRefNode(node.enter_call), - orig_rhs=node.enter_call), + pos, lhs=target, with_node=node), body]) excinfo_target = ExprNodes.TupleNode(pos, slow=True, args=[ |