def handle_Return(state, node, ctx, **_):
state_update = dict(returns_ctr=state.returns_ctr + 1)
new_nodes = [
ast.Assign(
targets=[ast.Name(id=ctx.return_var, ctx=ast.Store())],
value=node.value)]
if state.loop_nesting_ctr > 0:
new_nodes.append(
ast.Assign(
targets=[ast.Name(id=ctx.return_flag_var, ctx=ast.Store())],
value=TRUE_NODE))
state_update.update(return_inside_a_loop=True, returns_in_loops=True)
new_nodes.append(ast.Break())
return state.update(state_update), new_nodes
评论列表
文章目录