hdl.rec: fix Record.like() being called through a subclass.

The subclass does not necessarily take layout as the first argument.
This commit is contained in:
whitequark 2019-11-09 16:44:01 +00:00
parent dc2a09b8b9
commit f8f7d83127

View file

@ -83,8 +83,8 @@ class Layout:
# Unlike most Values, Record *can* be subclassed.
class Record(Value):
@classmethod
def like(cls, other, *, name=None, name_suffix=None, src_loc_at=0):
@staticmethod
def like(other, *, name=None, name_suffix=None, src_loc_at=0):
if name is not None:
new_name = str(name)
elif name_suffix is not None:
@ -107,7 +107,7 @@ class Record(Value):
fields[field_name] = Signal.like(field, name=concat(new_name, field_name),
src_loc_at=1 + src_loc_at)
return cls(other.layout, name=new_name, fields=fields, src_loc_at=1)
return Record(other.layout, name=new_name, fields=fields, src_loc_at=1)
def __init__(self, layout, *, name=None, fields=None, src_loc_at=0):
if name is None: