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:
parent
dc2a09b8b9
commit
f8f7d83127
|
@ -83,8 +83,8 @@ class Layout:
|
||||||
|
|
||||||
# Unlike most Values, Record *can* be subclassed.
|
# Unlike most Values, Record *can* be subclassed.
|
||||||
class Record(Value):
|
class Record(Value):
|
||||||
@classmethod
|
@staticmethod
|
||||||
def like(cls, other, *, name=None, name_suffix=None, src_loc_at=0):
|
def like(other, *, name=None, name_suffix=None, src_loc_at=0):
|
||||||
if name is not None:
|
if name is not None:
|
||||||
new_name = str(name)
|
new_name = str(name)
|
||||||
elif name_suffix is not None:
|
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),
|
fields[field_name] = Signal.like(field, name=concat(new_name, field_name),
|
||||||
src_loc_at=1 + src_loc_at)
|
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):
|
def __init__(self, layout, *, name=None, fields=None, src_loc_at=0):
|
||||||
if name is None:
|
if name is None:
|
||||||
|
|
Loading…
Reference in a new issue