return "BaseTy." + self._name_
-@plain_data(frozen=True, unsafe_hash=True)
+@plain_data(frozen=True, unsafe_hash=True, repr=False)
@final
class Ty:
__slots__ = "base_ty", "reg_len"
self.base_ty = base_ty
self.reg_len = reg_len
+ def __repr__(self):
+ # type: () -> str
+ if self.reg_len != 1:
+ reg_len = f"*{self.reg_len}"
+ else:
+ reg_len = ""
+ return f"<{self.base_ty._name_}{reg_len}>"
+
@unique
@final
def __repr__(self):
# type: () -> str
- return f"<{self.op.name}#{self.output_idx}>"
+ return f"<{self.op.name}#{self.output_idx}: {self.ty}>"
@cached_property
def defining_descriptor(self):
super().__init__(items, op)
-@plain_data(frozen=True, eq=False)
+@plain_data(frozen=True, eq=False, repr=False)
@final
class Op:
__slots__ = "fn", "properties", "inputs", "immediates", "outputs", "name"
def __hash__(self):
return object.__hash__(self)
+ def __repr__(self):
+ # type: () -> str
+ field_vals = [] # type: list[str]
+ for name in fields(self):
+ if name == "properties":
+ name = "kind"
+ elif name == "fn":
+ continue
+ try:
+ value = getattr(self, name)
+ except AttributeError:
+ field_vals.append(f"{name}=<not set>")
+ continue
+ if isinstance(value, OpInputSeq):
+ value = list(value) # type: ignore
+ field_vals.append(f"{name}={value!r}")
+ field_vals_str = ", ".join(field_vals)
+ return f"Op({field_vals_str})"
+
def pre_ra_sim(self, state):
# type: (PreRASimState) -> None
for inp in self.inputs: