Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions mypyc/irbuild/targets.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ def __init__(self, register: Register) -> None:
self.register = register
self.type = register.type

def __repr__(self) -> str:
return f"AssignmentTargetRegister({self.register.name})"


class AssignmentTargetIndex(AssignmentTarget):
"""base[index] as assignment target"""
Expand All @@ -31,6 +34,9 @@ def __init__(self, base: Value, index: Value) -> None:
# lvalue type in mypy and use a better type to avoid unneeded boxing.
self.type = object_rprimitive

def __repr__(self) -> str:
return f"AssignmentTargetIndex({self.base!r}, {self.index!r})"


class AssignmentTargetAttr(AssignmentTarget):
"""obj.attr as assignment target"""
Expand All @@ -48,10 +54,17 @@ def __init__(self, obj: Value, attr: str, can_borrow: bool = False) -> None:
self.obj_type = object_rprimitive
self.type = object_rprimitive

def __repr__(self) -> str:
can_borrow_str = ", can_borrow=True" if self.can_borrow else ""
return f"AssignmentTargetAttr({self.obj!r}.{self.attr}{can_borrow_str})"


class AssignmentTargetTuple(AssignmentTarget):
"""x, ..., y as assignment target"""

def __init__(self, items: list[AssignmentTarget], star_idx: int | None = None) -> None:
self.items = items
self.star_idx = star_idx

def __repr__(self) -> str:
return f"AssignmentTargetTuple({self.items}, {self.star_idx})"