compat.fhdl.structure: always order default case as the very last.

This commit is contained in:
whitequark 2019-06-13 03:52:04 +00:00
parent f1174655b1
commit f689b777b4

View file

@ -79,6 +79,7 @@ class Case(ast.Switch):
"`with m.Case(): stmts`")
def __init__(self, test, cases):
new_cases = []
default = None
for k, v in cases.items():
if isinstance(k, (bool, int)):
k = Const(k)
@ -86,10 +87,13 @@ class Case(ast.Switch):
and not (isinstance(k, str) and k == "default")):
raise TypeError("Case object is not a Migen constant")
if isinstance(k, str) and k == "default":
k = "-" * len(ast.Value.wrap(test))
default = v
else:
k = k.value
new_cases.append((k, v))
if default is not None:
k = "-" * len(ast.Value.wrap(test))
new_cases.append((k, default))
super().__init__(test, OrderedDict(new_cases))
@deprecated("instead of `Case(...).makedefault()`, use an explicit default case: "