hdl.rec: proxy operators correctly.
authorawygle <awygle@gmail.com>
Mon, 9 Nov 2020 20:20:25 +0000 (12:20 -0800)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 31 Dec 2021 15:22:49 +0000 (15:22 +0000)
commit8d294f0bbb9e30f74383793737363b89af5322e6
treefd77290f71c0178693a504586a7ddef181cbebd7
parent2e2e6b9dbb9f62460a822d386f98dc1724f67b81
hdl.rec: proxy operators correctly.

Commit abbebf8e used __getattr__ to proxy Value methods called on
Record. However, that did not proxy operators like __add__ because
Python looks up the special operator methods directly on the class
and does not run __getattr__ if they are missing.

Instead of using __getattr__, explicitly enumerate and wrap every
Value method that should be proxied. This also ensures backwards
compatibility if more methods are added to Value later.

Fixes #533.
nmigen/hdl/rec.py
tests/test_hdl_rec.py