compat.fhdl.module: fix specials.

This commit is contained in:
whitequark 2018-12-14 16:14:08 +00:00
parent 3b23645fb7
commit 3bc3647380

View file

@ -61,19 +61,19 @@ class _CompatModuleSync(_CompatModuleProxy):
class _CompatModuleSpecials(_CompatModuleProxy): class _CompatModuleSpecials(_CompatModuleProxy):
@deprecated("instead of `self.specials.<name> =`, use `m.submodules.<name> =`") @deprecated("instead of `self.specials.<name> =`, use `m.submodules.<name> =`")
def __setattr__(self, name, value): def __setattr__(self, name, value):
self._cm._submodules += (name, value) self._cm._specials.append((name, value))
setattr(self._cm, name, value) setattr(self._cm, name, value)
@deprecated("instead of `self.specials +=`, use `m.submodules +=`") @deprecated("instead of `self.specials +=`, use `m.submodules +=`")
def __iadd__(self, other): def __iadd__(self, other):
self._cm._submodules += [(None, e) for e in _flat_list(other)] self._cm._specials += [(None, e) for e in _flat_list(other)]
return self return self
class _CompatModuleSubmodules(_CompatModuleProxy): class _CompatModuleSubmodules(_CompatModuleProxy):
@deprecated("instead of `self.submodules.<name> =`, use `m.submodules.<name> =`") @deprecated("instead of `self.submodules.<name> =`, use `m.submodules.<name> =`")
def __setattr__(self, name, value): def __setattr__(self, name, value):
self._cm._submodules += (name, value) self._cm._submodules.append((name, value))
setattr(self._cm, name, value) setattr(self._cm, name, value)
@deprecated("instead of `self.submodules +=`, use `m.submodules +=`") @deprecated("instead of `self.submodules +=`, use `m.submodules +=`")
@ -122,6 +122,9 @@ class CompatModule:
elif name == "_submodules": elif name == "_submodules":
self._submodules = [] self._submodules = []
return self._submodules return self._submodules
elif name == "_specials":
self._specials = []
return self._specials
elif name == "_clock_domains": elif name == "_clock_domains":
self._clock_domains = [] self._clock_domains = []
return self._clock_domains return self._clock_domains
@ -132,6 +135,10 @@ class CompatModule:
raise AttributeError("'{}' object has no attribute '{}'" raise AttributeError("'{}' object has no attribute '{}'"
.format(type(self).__name__, name)) .format(type(self).__name__, name))
def _finalize_specials(self):
for name, special in self._specials:
self._module._add_submodule(special, name)
def _finalize_submodules(self): def _finalize_submodules(self):
for name, submodule in self._submodules: for name, submodule in self._submodules:
if not submodule.get_fragment_called: if not submodule.get_fragment_called: