From: Sebastien Bourdeauducq Date: Sat, 17 Dec 2011 19:31:42 +0000 (+0100) Subject: fhdl: fix series of if/elif/else X-Git-Tag: 24jan2021_ls180~2099^2~1128 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d21e095397ebbe45757cbaf06385878f3670062d;p=litex.git fhdl: fix series of if/elif/else --- diff --git a/migen/fhdl/structure.py b/migen/fhdl/structure.py index 9a03b599..92f767a8 100644 --- a/migen/fhdl/structure.py +++ b/migen/fhdl/structure.py @@ -161,13 +161,21 @@ class If: self.f = StatementList() def Else(self, *f): - self.f = StatementList(f) + _insert_else(self, StatementList(f)) return self def Elif(self, cond, *t): - self.f = StatementList([If(cond, *t)]) + _insert_else(self, StatementList([If(cond, *t)])) return self +def _insert_else(obj, clause): + o = obj + while o.f.l: + assert(len(o.f.l) == 1) + assert(isinstance(o.f.l[0], If)) + o = o.f.l[0] + o.f = clause + def _sl(x): if isinstance(x, list): return StatementList(x)