diff --git a/amaranth/lib/wiring.py b/amaranth/lib/wiring.py index cc1977b..c8a4287 100644 --- a/amaranth/lib/wiring.py +++ b/amaranth/lib/wiring.py @@ -552,7 +552,10 @@ class FlippedInterface: def flipped(interface): - return FlippedInterface(interface) + if type(interface) is FlippedInterface: + return interface._FlippedInterface__unflipped + else: + return FlippedInterface(interface) @final diff --git a/tests/test_lib_wiring.py b/tests/test_lib_wiring.py index 06e9bab..d33ac7e 100644 --- a/tests/test_lib_wiring.py +++ b/tests/test_lib_wiring.py @@ -530,6 +530,7 @@ class FlippedInterfaceTestCase(unittest.TestCase): self.assertEqual(tintf, flipped(intf)) self.assertRegex(repr(tintf), r"^flipped\(<.+?\.Interface object at .+>\)$") + self.assertIs(flipped(tintf), intf) def test_getattr_setattr(self): class I(Interface):