hdl._dsl: forbid empty string as submodule name.
This is semantically ambiguous and breaks the RTLIL emitter. Fixes #1209.
This commit is contained in:
parent
7870eb344b
commit
0140fe27e2
|
@ -654,6 +654,8 @@ class Module(_ModuleBuilderRoot, Elaboratable):
|
|||
if name == None:
|
||||
self._anon_submodules.append((submodule, src_loc))
|
||||
else:
|
||||
if name == "":
|
||||
raise NameError("Submodule name must not be empty")
|
||||
if name in self._named_submodules:
|
||||
raise NameError(f"Submodule named '{name}' already exists")
|
||||
self._named_submodules[name] = (submodule, src_loc)
|
||||
|
|
|
@ -887,6 +887,12 @@ class DSLTestCase(FHDLTestCase):
|
|||
with self.assertRaisesRegex(NameError, r"^Submodule named 'foo' already exists$"):
|
||||
m1.submodules.foo = m2
|
||||
|
||||
def test_submodule_named_empty(self):
|
||||
m1 = Module()
|
||||
m2 = Module()
|
||||
with self.assertRaisesRegex(NameError, r"^Submodule name must not be empty$"):
|
||||
m1.submodules[""] = m2
|
||||
|
||||
def test_submodule_get(self):
|
||||
m1 = Module()
|
||||
m2 = Module()
|
||||
|
|
Loading…
Reference in a new issue