From 7fb73dce3d64c52d85c765a1940a15b65847ba89 Mon Sep 17 00:00:00 2001 From: whitequark Date: Fri, 14 Dec 2018 16:14:08 +0000 Subject: [PATCH] compat.fhdl.module: fix specials. --- nmigen/compat/fhdl/module.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/nmigen/compat/fhdl/module.py b/nmigen/compat/fhdl/module.py index aa8d067..6d12e82 100644 --- a/nmigen/compat/fhdl/module.py +++ b/nmigen/compat/fhdl/module.py @@ -61,19 +61,19 @@ class _CompatModuleSync(_CompatModuleProxy): class _CompatModuleSpecials(_CompatModuleProxy): @deprecated("instead of `self.specials. =`, use `m.submodules. =`") def __setattr__(self, name, value): - self._cm._submodules += (name, value) + self._cm._specials.append((name, value)) setattr(self._cm, name, value) @deprecated("instead of `self.specials +=`, use `m.submodules +=`") 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 class _CompatModuleSubmodules(_CompatModuleProxy): @deprecated("instead of `self.submodules. =`, use `m.submodules. =`") def __setattr__(self, name, value): - self._cm._submodules += (name, value) + self._cm._submodules.append((name, value)) setattr(self._cm, name, value) @deprecated("instead of `self.submodules +=`, use `m.submodules +=`") @@ -122,6 +122,9 @@ class CompatModule: elif name == "_submodules": self._submodules = [] return self._submodules + elif name == "_specials": + self._specials = [] + return self._specials elif name == "_clock_domains": self._clock_domains = [] return self._clock_domains @@ -132,6 +135,10 @@ class CompatModule: raise AttributeError("'{}' object has no attribute '{}'" .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): for name, submodule in self._submodules: if not submodule.get_fragment_called: -- 2.30.2