Skip to content

Commit 094f66d

Browse files
authored
[mypyc] Add __repr__ to AssignmentTarget subclasses (#20258)
This makes debugging a little easier, since you can see register names etc.
1 parent 0738db3 commit 094f66d

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

mypyc/irbuild/targets.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ def __init__(self, register: Register) -> None:
2020
self.register = register
2121
self.type = register.type
2222

23+
def __repr__(self) -> str:
24+
return f"AssignmentTargetRegister({self.register.name})"
25+
2326

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

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

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

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

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

5565
def __init__(self, items: list[AssignmentTarget], star_idx: int | None = None) -> None:
5666
self.items = items
5767
self.star_idx = star_idx
68+
69+
def __repr__(self) -> str:
70+
return f"AssignmentTargetTuple({self.items}, {self.star_idx})"

0 commit comments

Comments
 (0)