MCPcopy Index your code
hub / github.com/python/cpython / close_variable

Method close_variable

Tools/cases_generator/stack.py:674–694  ·  view source on GitHub ↗
(var: Local, overwrite: str)

Source from the content-addressed store, hash-verified

672 out.emit(f"{close}({name});\n")
673
674 def close_variable(var: Local, overwrite: str) -> None:
675 nonlocal tmp_defined
676 close = "PyStackRef_CLOSE"
677 if "null" in var.name:
678 close = "PyStackRef_XCLOSE"
679 var.memory_offset = None
680 self.save(out)
681 out.start_line()
682 if var.size:
683 if var.size == "1":
684 close_named(close, f"{var.name}[0]", overwrite)
685 else:
686 if overwrite and not tmp_defined:
687 out.emit("_PyStackRef tmp;\n")
688 tmp_defined = True
689 out.emit(f"for (int _i = {var.size}; --_i >= 0;) {{\n")
690 close_named(close, f"{var.name}[_i]", overwrite)
691 out.emit("}\n")
692 else:
693 close_named(close, var.name, overwrite)
694 self.reload(out)
695
696 self.clear_dead_inputs()
697 if not self.inputs:

Callers

nothing calls this directly

Calls 4

saveMethod · 0.95
reloadMethod · 0.95
start_lineMethod · 0.80
emitMethod · 0.45

Tested by

no test coverage detected