hdl.xfrm: Add on_AnyConst and on_AnySeq abstract methods for ValueVisitor and children.
authorWilliam D. Jones <thor0505@comcast.net>
Tue, 15 Jan 2019 21:05:25 +0000 (16:05 -0500)
committerwhitequark <whitequark@whitequark.org>
Tue, 15 Jan 2019 22:52:45 +0000 (22:52 +0000)
nmigen/back/pysim.py
nmigen/hdl/xfrm.py

index 1278923ba67894b5ca153b555fe34c383238f712..95b23552fae16c1f62c0d3818b0a929a1b8043a3 100644 (file)
@@ -87,6 +87,12 @@ class _RHSValueCompiler(_ValueCompiler):
     def on_Const(self, value):
         return lambda state: value.value
 
+    def on_AnyConst(self, value):
+        raise NotImplementedError # :nocov:
+
+    def on_AnySeq(self, value):
+        raise NotImplementedError # :nocov:
+
     def on_Signal(self, value):
         if self.sensitivity is not None:
             self.sensitivity.add(value)
@@ -219,6 +225,12 @@ class _LHSValueCompiler(_ValueCompiler):
     def on_Const(self, value):
         raise TypeError # :nocov:
 
+    def on_AnyConst(self, value):
+        raise TypeError # :nocov:
+
+    def on_AnySeq(self, value):
+        raise TypeError # :nocov:
+
     def on_Signal(self, value):
         shape = value.shape()
         value_slot = self.signal_slots[value]
index 33c534ec3a318909a02b261c19a668f56c8b0160..728b95bac72c54174f5244697a032f45adf78b7e 100644 (file)
@@ -23,6 +23,14 @@ class ValueVisitor(metaclass=ABCMeta):
     def on_Const(self, value):
         pass # :nocov:
 
+    @abstractmethod
+    def on_AnyConst(self, value):
+        pass # :nocov:
+
+    @abstractmethod
+    def on_AnySeq(self, value):
+        pass # :nocov:
+
     @abstractmethod
     def on_Signal(self, value):
         pass # :nocov:
@@ -69,6 +77,10 @@ class ValueVisitor(metaclass=ABCMeta):
     def on_value(self, value):
         if type(value) is Const:
             new_value = self.on_Const(value)
+        elif type(value) is AnyConst:
+            new_value = self.on_AnyConst(value)
+        elif type(value) is AnySeq:
+            new_value = self.on_AnySeq(value)
         elif type(value) is Signal:
             new_value = self.on_Signal(value)
         elif type(value) is Record:
@@ -104,6 +116,12 @@ class ValueTransformer(ValueVisitor):
     def on_Const(self, value):
         return value
 
+    def on_AnyConst(self, value):
+        return value
+
+    def on_AnySeq(self, value):
+        return value
+
     def on_Signal(self, value):
         return value