summaryrefslogtreecommitdiff
path: root/Cython/Compiler/ParseTreeTransforms.py
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2014-08-11 22:05:05 +0200
committerStefan Behnel <stefan_ml@behnel.de>2014-08-11 22:05:05 +0200
commit749af0fa87c0ec6acb62a1f62e7f3b19c18057da (patch)
tree326e596fe423a217eb8a742367b363adefbfa3e6 /Cython/Compiler/ParseTreeTransforms.py
parente3036318bd208870902f23d0b7716aff71bcc67e (diff)
downloadcython-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.py9
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=[