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

Class PatchVisitor

mypyc/transform/ir_transform.py:235–381  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

233
234
235class PatchVisitor(OpVisitor[None]):
236 def __init__(
237 self, op_map: dict[Value, Value | None], block_map: dict[BasicBlock, BasicBlock]
238 ) -> None:
239 self.op_map: Final = op_map
240 self.block_map: Final = block_map
241
242 def fix_op(self, op: Value) -> Value:
243 new = self.op_map.get(op, op)
244 assert new is not None, "use of removed op"
245 return new
246
247 def fix_block(self, block: BasicBlock) -> BasicBlock:
248 return self.block_map.get(block, block)
249
250 def visit_goto(self, op: Goto) -> None:
251 op.label = self.fix_block(op.label)
252
253 def visit_branch(self, op: Branch) -> None:
254 op.value = self.fix_op(op.value)
255 op.true = self.fix_block(op.true)
256 op.false = self.fix_block(op.false)
257
258 def visit_return(self, op: Return) -> None:
259 op.value = self.fix_op(op.value)
260
261 def visit_unreachable(self, op: Unreachable) -> None:
262 pass
263
264 def visit_assign(self, op: Assign) -> None:
265 op.src = self.fix_op(op.src)
266
267 def visit_assign_multi(self, op: AssignMulti) -> None:
268 op.src = [self.fix_op(s) for s in op.src]
269
270 def visit_load_error_value(self, op: LoadErrorValue) -> None:
271 pass
272
273 def visit_load_literal(self, op: LoadLiteral) -> None:
274 pass
275
276 def visit_get_attr(self, op: GetAttr) -> None:
277 op.obj = self.fix_op(op.obj)
278
279 def visit_set_attr(self, op: SetAttr) -> None:
280 op.obj = self.fix_op(op.obj)
281 op.src = self.fix_op(op.src)
282
283 def visit_load_static(self, op: LoadStatic) -> None:
284 pass
285
286 def visit_init_static(self, op: InitStatic) -> None:
287 op.value = self.fix_op(op.value)
288
289 def visit_tuple_get(self, op: TupleGet) -> None:
290 op.src = self.fix_op(op.src)
291
292 def visit_tuple_set(self, op: TupleSet) -> None:

Callers 1

transform_blocksMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…