realised that the new dsl.Module AST Type class should be a (static) function
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 20 Oct 2021 13:39:18 +0000 (14:39 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 20 Oct 2021 13:39:18 +0000 (14:39 +0100)
not a class in which there is expected to be a function named "cast"

nmigen/hdl/dsl.py

index 982b3a574fd4aad475878b0ff9a927f11dae5a07..09fa92a08200bc65cf4484b3ccf11dfb73a1fdec 100644 (file)
@@ -163,7 +163,7 @@ class Module(_ModuleBuilderRoot, Elaboratable):
         raise SyntaxError("Instead of inheriting from `Module`, inherit from `Elaboratable` "
                           "and return a `Module` from the `elaborate(self, platform)` method")
 
-    def __init__(self, _astType=None):
+    def __init__(self, _astTypeFn=None):
         _ModuleBuilderRoot.__init__(self, self, depth=0)
         self.submodules    = _ModuleBuilderSubmodules(self)
         self.domains       = _ModuleBuilderDomainSet(self)
@@ -181,7 +181,7 @@ class Module(_ModuleBuilderRoot, Elaboratable):
         # to complete the Type 1 (ast.*) nmigen language construct abstraction
         # from Type 2 (Module - this class) Module must be told what AST type
         # it may cast m.If/Elif conditions and m.Switch
-        self._astType      = _astType or Value
+        self._astTypeCast  = _astTypeFn or Value.cast
 
     def _check_context(self, construct, context):
         if self._ctrl_context != context:
@@ -214,7 +214,7 @@ class Module(_ModuleBuilderRoot, Elaboratable):
         return data
 
     def _check_signed_cond(self, cond):
-        cond = self._astType.cast(cond)
+        cond = self._astTypeCast(cond)
         width, signed = cond.shape()
         if signed:
             warnings.warn("Signed values in If/Elif conditions usually result from inverting "
@@ -295,7 +295,7 @@ class Module(_ModuleBuilderRoot, Elaboratable):
     def Switch(self, test):
         self._check_context("Switch", context=None)
         switch_data = self._set_ctrl("Switch", {
-            "test":    self._astType.cast(test),
+            "test":    self._astTypeCast(test),
             "cases":   OrderedDict(),
             "src_loc": tracer.get_src_loc(src_loc_at=1),
             "case_src_locs": {},