diff options
Diffstat (limited to 'py')
| -rw-r--r-- | py/objdict.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/py/objdict.c b/py/objdict.c index baad8a1b9..a621c4fea 100644 --- a/py/objdict.c +++ b/py/objdict.c @@ -515,6 +515,15 @@ STATIC void dict_view_print(const mp_print_t *print, mp_obj_t self_in, mp_print_ mp_print_str(print, "])"); } +STATIC mp_obj_t dict_view_unary_op(mp_unary_op_t op, mp_obj_t o_in) { + mp_obj_dict_view_t *o = MP_OBJ_TO_PTR(o_in); + // only dict.values() supports __hash__. + 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; +} + STATIC mp_obj_t dict_view_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) { // only supported for the 'keys' kind until sets and dicts are refactored mp_obj_dict_view_t *o = MP_OBJ_TO_PTR(lhs_in); @@ -532,6 +541,7 @@ STATIC MP_DEFINE_CONST_OBJ_TYPE( MP_QSTR_dict_view, MP_TYPE_FLAG_ITER_IS_GETITER, print, dict_view_print, + unary_op, dict_view_unary_op, binary_op, dict_view_binary_op, iter, dict_view_getiter ); |
