hdl.ast: improve repr() for Shape.
The default __repr__() from typing.NamedTuple does not include the module name, so the replacement (which uses the preferred syntax for specifying these shapes) doesn't either.
This commit is contained in:
parent
9055090f65
commit
e9c75f7ca1
|
@ -89,6 +89,12 @@ class Shape(typing.NamedTuple):
|
||||||
return Shape(width, signed)
|
return Shape(width, signed)
|
||||||
raise TypeError("Object {!r} cannot be used as value shape".format(obj))
|
raise TypeError("Object {!r} cannot be used as value shape".format(obj))
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
if self.signed:
|
||||||
|
return "signed({})".format(self.width)
|
||||||
|
else:
|
||||||
|
return "unsigned({})".format(self.width)
|
||||||
|
|
||||||
|
|
||||||
# TODO: use dataclasses instead of this hack
|
# TODO: use dataclasses instead of this hack
|
||||||
def _Shape___init__(self, width=1, signed=False):
|
def _Shape___init__(self, width=1, signed=False):
|
||||||
|
|
|
@ -39,6 +39,10 @@ class ShapeTestCase(FHDLTestCase):
|
||||||
msg="Width must be a non-negative integer, not -1"):
|
msg="Width must be a non-negative integer, not -1"):
|
||||||
Shape(-1)
|
Shape(-1)
|
||||||
|
|
||||||
|
def test_repr(self):
|
||||||
|
self.assertEqual(repr(Shape()), "unsigned(1)")
|
||||||
|
self.assertEqual(repr(Shape(2, True)), "signed(2)")
|
||||||
|
|
||||||
def test_tuple(self):
|
def test_tuple(self):
|
||||||
width, signed = Shape()
|
width, signed = Shape()
|
||||||
self.assertEqual(width, 1)
|
self.assertEqual(width, 1)
|
||||||
|
|
Loading…
Reference in a new issue