def _build_global_variable(state, addr, slot): node = nodes.TableElement() node.table = nodes.Identifier() node.table.type = nodes.Identifier.T_BUILTIN node.table.name = "_env" node.key = _build_string_constant(state, slot) return node
def _build_identifier_name(addr, slot, want_type, name): node = nodes.Identifier() setattr(node, "_addr", addr) node.slot = slot node.type = want_type node.name = name return node
def _build_identifier(state, addr, slot, want_type): node = nodes.Identifier() setattr(node, "_addr", addr) node.slot = slot node.type = nodes.Identifier.T_SLOT node.slot_index = state.slot_index if want_type == nodes.Identifier.T_UPVALUE: name = state.debuginfo.lookup_upvalue_name(slot) if name is not None: node.name = name node.type = want_type node.slot_index = -1 node.slot = state.constants.upvalue_references[slot] return node
def _build_identifier(state, addr, slot, want_type): node = nodes.Identifier() setattr(node, "_addr", addr) node.slot = slot node.type = nodes.Identifier.T_SLOT if want_type == nodes.Identifier.T_UPVALUE: name = state.debuginfo.lookup_upvalue_name(slot) if name is not None: node.name = name node.type = want_type return node
def _build_identifier(state, addr, slot, want_type): node = nodes.Identifier() setattr(node, "_addr", addr) node.slot = slot node.type = nodes.Identifier.T_SLOT if want_type == nodes.Identifier.T_UPVALUE: name = state.debuginfo.lookup_upvalue_name(slot) # No problem if name is None, that'll be fixed in writer.Visitor.visit_identifier node.name = name node.type = want_type return node
def _build_identifier(state, addr, slot, want_type, need_local_name=False): node = nodes.Identifier() setattr(node, "_addr", addr) node.slot = slot node.type = nodes.Identifier.T_SLOT if want_type == nodes.Identifier.T_UPVALUE: name = state.debuginfo.lookup_upvalue_name(slot) if name is not None: node.name = name node.type = want_type if need_local_name and want_type == nodes.Identifier.T_LOCAL: name = state.debuginfo.lookup_upvalue_name(slot) if name is None: name = "slot{slot}".format(slot=slot) node.name = name node.type = want_type return node