summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--py/objdict.c3
-rw-r--r--tests/basics/dict_views.py5
2 files changed, 7 insertions, 1 deletions
diff --git a/py/objdict.c b/py/objdict.c
index 451e87329..692a7de42 100644
--- a/py/objdict.c
+++ b/py/objdict.c
@@ -521,7 +521,8 @@ static mp_obj_t dict_view_unary_op(mp_unary_op_t op, mp_obj_t o_in) {
if (op == MP_UNARY_OP_HASH && o->kind == MP_DICT_VIEW_VALUES) {
return MP_OBJ_NEW_SMALL_INT((mp_uint_t)o_in);
}
- return MP_OBJ_NULL;
+ // delegate all other ops to dict unary op handler
+ return dict_unary_op(op, o->dict);
}
static mp_obj_t dict_view_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) {
diff --git a/tests/basics/dict_views.py b/tests/basics/dict_views.py
index a82f47b6b..45f3238f1 100644
--- a/tests/basics/dict_views.py
+++ b/tests/basics/dict_views.py
@@ -6,6 +6,11 @@ for m in d.items, d.values, d.keys:
# print a view with more than one item
print({1:1, 2:1}.values())
+# `bool` and `len` unary ops
+for d in ({}, {1: 2}, {1: 2, 3: 4}):
+ for op in (bool, len):
+ print(op(d.keys()), op(d.values()), op(d.items()))
+
# unsupported binary op on a dict values view
try:
{1:1}.values() + 1