MCPcopy Index your code
hub / github.com/python/mypy / TryFinallyNonlocalControl

Class TryFinallyNonlocalControl

mypyc/irbuild/nonlocalcontrol.py:157–181  ·  view source on GitHub ↗

Nonlocal control within try/finally.

Source from the content-addressed store, hash-verified

155
156
157class TryFinallyNonlocalControl(NonlocalControl):
158 """Nonlocal control within try/finally."""
159
160 def __init__(self, target: BasicBlock) -> None:
161 self.target = target
162 self.ret_reg: None | Register | AssignmentTarget = None
163
164 def gen_break(self, builder: IRBuilder, line: int) -> None:
165 builder.error("break inside try/finally block is unimplemented", line)
166
167 def gen_continue(self, builder: IRBuilder, line: int) -> None:
168 builder.error("continue inside try/finally block is unimplemented", line)
169
170 def gen_return(self, builder: IRBuilder, value: Value, line: int) -> None:
171 if self.ret_reg is None:
172 if builder.fn_info.is_generator:
173 self.ret_reg = builder.make_spill_target(builder.ret_types[-1])
174 else:
175 self.ret_reg = Register(builder.ret_types[-1])
176 # assert needed because of apparent mypy bug... it loses track of the union
177 # and infers the type as object
178 assert isinstance(self.ret_reg, (Register, AssignmentTarget)), self.ret_reg
179 builder.assign(self.ret_reg, value, line)
180
181 builder.add(Goto(self.target))
182
183
184class ExceptNonlocalControl(CleanupNonlocalControl):

Callers 2

try_finally_tryFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…