buil.plat: enable strict undefined behavior in Jinja2.
authorwhitequark <whitequark@whitequark.org>
Tue, 14 Apr 2020 06:17:16 +0000 (06:17 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 31 Dec 2021 13:27:30 +0000 (13:27 +0000)
commit499603a37a5f425248fee64dfcc5138f94ae9d33
treefe1e12c95ba48037f6819f08c52574d6aeba4d06
parent349c3ee60fb30779d2c3061757c1cef3c19b9b73
buil.plat: enable strict undefined behavior in Jinja2.

By default, if an operation produces an undefined value (a Jinja2
concept that corresponds to Python's KeyError, AttributeError, etc)
then this value may be printed in a template, which is a nop. This
behavior can hide bugs.

This commit changes the Jinja2 behavior to raise an error instead of
producing an undefined value in all cases. (We produce undefined
values deliberately in a few places. Those are unaffected; it is OK
to use several kinds of undefined values in one Jinja2 environment.)

Fixes #337.
nmigen/build/plat.py
nmigen/vendor/lattice_ice40.py