hdl.dsl: clarify error message for incorrect nesting.
authorwhitequark <whitequark@whitequark.org>
Sun, 7 Jul 2019 00:59:57 +0000 (00:59 +0000)
committerwhitequark <whitequark@whitequark.org>
Sun, 7 Jul 2019 00:59:57 +0000 (00:59 +0000)
Refs #133.

nmigen/hdl/dsl.py
nmigen/test/test_hdl_dsl.py

index 415ad951c9d077c6e7476030df7482a451ea2b95..a2cec0b45d3df1d03582267fdc3ef6543d36f4d0 100644 (file)
@@ -133,7 +133,7 @@ class Module(_ModuleBuilderRoot, Elaboratable):
                 raise SyntaxError("{} is not permitted outside of {}"
                                   .format(construct, context))
             else:
-                raise SyntaxError("{} is not permitted inside of {}"
+                raise SyntaxError("{} is not permitted directly inside of {}"
                                   .format(construct, self._ctrl_context))
 
     def _get_ctrl(self, name):
index 714eb479228c392d96775f472a0ef03b7434fc91..e01b083b22cbdc50ff451c79440761bd205bd001 100644 (file)
@@ -345,7 +345,7 @@ class DSLTestCase(FHDLTestCase):
         m = Module()
         with m.Switch(self.s1):
             with self.assertRaises(SyntaxError,
-                    msg="If is not permitted inside of Switch"):
+                    msg="If is not permitted directly inside of Switch"):
                 with m.If(self.s2):
                     pass
 
@@ -480,6 +480,16 @@ class DSLTestCase(FHDLTestCase):
             with m.FSM():
                 m.next = "FOO"
 
+    def test_If_inside_FSM_wrong(self):
+        m = Module()
+        with m.FSM():
+            with m.State("FOO"):
+                pass
+            with self.assertRaises(SyntaxError,
+                    msg="If is not permitted directly inside of FSM"):
+                with m.If(self.s2):
+                    pass
+
     def test_auto_pop_ctrl(self):
         m = Module()
         with m.If(self.w1):