hdl.ir: raise a more descriptive error on non-elaboratable object.
This commit is contained in:
parent
43e4833ddb
commit
8ee6bd80ff
|
@ -18,9 +18,13 @@ class Fragment:
|
||||||
def get(obj, platform):
|
def get(obj, platform):
|
||||||
if isinstance(obj, Fragment):
|
if isinstance(obj, Fragment):
|
||||||
return obj
|
return obj
|
||||||
if not hasattr(obj, "elaborate"): # :deprecated:
|
if hasattr(obj, "elaborate"):
|
||||||
return Fragment.get(obj.get_fragment(platform), platform)
|
frag = obj.elaborate(platform)
|
||||||
return Fragment.get(obj.elaborate(platform), platform)
|
elif hasattr(obj, "get_fragment"): # :deprecated:
|
||||||
|
frag = obj.get_fragment(platform)
|
||||||
|
else:
|
||||||
|
raise AttributeError("Object '{!r}' cannot be elaborated".format(obj))
|
||||||
|
return Fragment.get(frag, platform)
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.ports = SignalDict()
|
self.ports = SignalDict()
|
||||||
|
|
|
@ -7,6 +7,13 @@ from ..hdl.mem import *
|
||||||
from .tools import *
|
from .tools import *
|
||||||
|
|
||||||
|
|
||||||
|
class FragmentGetTestCase(FHDLTestCase):
|
||||||
|
def test_get_wrong(self):
|
||||||
|
with self.assertRaises(AttributeError,
|
||||||
|
msg="Object 'None' cannot be elaborated"):
|
||||||
|
Fragment.get(None, platform=None)
|
||||||
|
|
||||||
|
|
||||||
class FragmentGeneratedTestCase(FHDLTestCase):
|
class FragmentGeneratedTestCase(FHDLTestCase):
|
||||||
def test_find_subfragment(self):
|
def test_find_subfragment(self):
|
||||||
f1 = Fragment()
|
f1 = Fragment()
|
||||||
|
|
Loading…
Reference in a new issue