summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/unary_op.py
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2020-02-20 22:30:49 +1100
committerDamien George <damien@micropython.org>2021-07-23 12:40:00 +1000
commit4e39ff221abff9d1d7d7fc654da67a89a7543112 (patch)
tree6c26ab519d0a9fac8d3f6e7776d65031421ba3fa /tests/basics/unary_op.py
parent14b853eae052f6d8ef285931336ca1212af76716 (diff)
downloadmicropython-4e39ff221abff9d1d7d7fc654da67a89a7543112.tar.gz
micropython-4e39ff221abff9d1d7d7fc654da67a89a7543112.zip
py/runtime: Fix bool unary op for subclasses of native types.
Previously a subclass of a type that didn't implement unary_op, or didn't handle MP_UNARY_OP_BOOL, would raise TypeError on bool conversion. Fixes #5677.
Diffstat (limited to 'tests/basics/unary_op.py')
-rw-r--r--tests/basics/unary_op.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/tests/basics/unary_op.py b/tests/basics/unary_op.py
index bd78a20d0d..2239e2b206 100644
--- a/tests/basics/unary_op.py
+++ b/tests/basics/unary_op.py
@@ -23,5 +23,12 @@ print(not A())
# check user instances derived from builtins
class B(int): pass
print(not B())
+print(True if B() else False)
class C(list): pass
print(not C())
+print(True if C() else False)
+# type doesn't define unary_op
+class D(type): pass
+d = D("foo", (), {})
+print(not d)
+print(True if d else False)