diff options
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=[ |