Commit d9196f9a authored by Stefan Behnel's avatar Stefan Behnel

Merge branch '0.27.x'

parents 35ae99b6 c90f1d84
...@@ -2867,18 +2867,18 @@ class WithExitCallNode(ExprNode): ...@@ -2867,18 +2867,18 @@ class WithExitCallNode(ExprNode):
# The __exit__() call of a 'with' statement. Used in both the # The __exit__() call of a 'with' statement. Used in both the
# except and finally clauses. # except and finally clauses.
# with_stat WithStatNode the surrounding 'with' statement # with_stat WithStatNode the surrounding 'with' statement
# args TupleNode or ResultStatNode the exception info tuple # args TupleNode or ResultStatNode the exception info tuple
# await AwaitExprNode the await expression of an 'async with' statement # await_expr AwaitExprNode the await expression of an 'async with' statement
subexprs = ['args', 'await'] subexprs = ['args', 'await_expr']
test_if_run = True test_if_run = True
await = None await_expr = None
def analyse_types(self, env): def analyse_types(self, env):
self.args = self.args.analyse_types(env) self.args = self.args.analyse_types(env)
if self.await: if self.await_expr:
self.await = self.await.analyse_types(env) self.await_expr = self.await_expr.analyse_types(env)
self.type = PyrexTypes.c_bint_type self.type = PyrexTypes.c_bint_type
self.is_temp = True self.is_temp = True
return self return self
...@@ -2905,12 +2905,12 @@ class WithExitCallNode(ExprNode): ...@@ -2905,12 +2905,12 @@ class WithExitCallNode(ExprNode):
code.putln(code.error_goto_if_null(result_var, self.pos)) code.putln(code.error_goto_if_null(result_var, self.pos))
code.put_gotref(result_var) code.put_gotref(result_var)
if self.await: if self.await_expr:
# FIXME: result_var temp currently leaks into the closure # FIXME: result_var temp currently leaks into the closure
self.await.generate_evaluation_code(code, source_cname=result_var, decref_source=True) self.await_expr.generate_evaluation_code(code, source_cname=result_var, decref_source=True)
code.putln("%s = %s;" % (result_var, self.await.py_result())) code.putln("%s = %s;" % (result_var, self.await_expr.py_result()))
self.await.generate_post_assignment_code(code) self.await_expr.generate_post_assignment_code(code)
self.await.free_temps(code) self.await_expr.free_temps(code)
if self.result_is_used: if self.result_is_used:
self.allocate_temp_result(code) self.allocate_temp_result(code)
......
...@@ -1292,7 +1292,7 @@ class WithTransform(CythonTransform, SkipDeclarations): ...@@ -1292,7 +1292,7 @@ class WithTransform(CythonTransform, SkipDeclarations):
pos, with_stat=node, pos, with_stat=node,
test_if_run=False, test_if_run=False,
args=excinfo_target, args=excinfo_target,
await=ExprNodes.AwaitExprNode(pos, arg=None) if is_async else None)), await_expr=ExprNodes.AwaitExprNode(pos, arg=None) if is_async else None)),
body=Nodes.ReraiseStatNode(pos), body=Nodes.ReraiseStatNode(pos),
), ),
], ],
...@@ -1314,7 +1314,7 @@ class WithTransform(CythonTransform, SkipDeclarations): ...@@ -1314,7 +1314,7 @@ class WithTransform(CythonTransform, SkipDeclarations):
test_if_run=True, test_if_run=True,
args=ExprNodes.TupleNode( args=ExprNodes.TupleNode(
pos, args=[ExprNodes.NoneNode(pos) for _ in range(3)]), pos, args=[ExprNodes.NoneNode(pos) for _ in range(3)]),
await=ExprNodes.AwaitExprNode(pos, arg=None) if is_async else None)), await_expr=ExprNodes.AwaitExprNode(pos, arg=None) if is_async else None)),
handle_error_case=False, handle_error_case=False,
) )
return node return node
......
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