diff --git a/py/obj.c b/py/obj.c index 3617ff67614abe3f4f361e4848f648df443b5c5c..f8b5ee34d9d960e745c51ab18c1594dc7c26e391 100644 --- a/py/obj.c +++ b/py/obj.c @@ -122,7 +122,7 @@ int mp_obj_is_true(mp_obj_t arg) { mp_obj_type_t *type = mp_obj_get_type(arg); if (type->unary_op != NULL) { mp_obj_t result = type->unary_op(MP_UNARY_OP_BOOL, arg); - if (result != MP_OBJ_NOT_SUPPORTED) { + if (result != MP_OBJ_NULL) { return result == mp_const_true; } } @@ -212,7 +212,7 @@ bool mp_obj_equal(mp_obj_t o1, mp_obj_t o2) { mp_obj_type_t *type = mp_obj_get_type(o1); if (type->binary_op != NULL) { mp_obj_t r = type->binary_op(MP_BINARY_OP_EQUAL, o1, o2); - if (r != MP_OBJ_NOT_SUPPORTED) { + if (r != MP_OBJ_NULL) { return r == mp_const_true ? true : false; } } @@ -357,12 +357,7 @@ mp_obj_t mp_obj_len_maybe(mp_obj_t o_in) { } else { mp_obj_type_t *type = mp_obj_get_type(o_in); if (type->unary_op != NULL) { - mp_obj_t val = type->unary_op(MP_UNARY_OP_LEN, o_in); - // TODO: Here's the case of having MP_OBJ_NOT_SUPPORTED is confusing - if (val == MP_OBJ_NOT_SUPPORTED) { - return MP_OBJ_NULL; - } - return val; + return type->unary_op(MP_UNARY_OP_LEN, o_in); } else { return MP_OBJ_NULL; } @@ -373,7 +368,7 @@ mp_obj_t mp_obj_subscr(mp_obj_t base, mp_obj_t index, mp_obj_t value) { mp_obj_type_t *type = mp_obj_get_type(base); if (type->subscr != NULL) { mp_obj_t ret = type->subscr(base, index, value); - if (ret != MP_OBJ_NOT_SUPPORTED) { + if (ret != MP_OBJ_NULL) { return ret; } // TODO: call base classes here? diff --git a/py/obj.h b/py/obj.h index 14ced0691aa476e18e25f3aa683c9da52d9d57fa..2df597de756cba9aba219b39d6fbe3e802242e6f 100644 --- a/py/obj.h +++ b/py/obj.h @@ -52,8 +52,7 @@ typedef struct _mp_obj_base_t mp_obj_base_t; // These fake objects are used to indicate certain things in arguments or return // values, and should only be used when explicitly allowed. // -// - MP_OBJ_NULL : used to indicate the absence of an object. -// - MP_OBJ_NOT_SUPPORTED : a return value that indicates an unsupported operation. +// - MP_OBJ_NULL : used to indicate the absence of an object, or unsupported operation. // - MP_OBJ_STOP_ITERATION : used instead of throwing a StopIteration, for efficiency. // - MP_OBJ_SENTINEL : used for various internal purposes where one needs // an object which is unique from all other objects, including MP_OBJ_NULL. @@ -63,14 +62,12 @@ typedef struct _mp_obj_base_t mp_obj_base_t; #if NDEBUG #define MP_OBJ_NULL ((mp_obj_t)0) -#define MP_OBJ_NOT_SUPPORTED ((mp_obj_t)0) #define MP_OBJ_STOP_ITERATION ((mp_obj_t)0) #define MP_OBJ_SENTINEL ((mp_obj_t)4) #else #define MP_OBJ_NULL ((mp_obj_t)0) -#define MP_OBJ_NOT_SUPPORTED ((mp_obj_t)4) -#define MP_OBJ_STOP_ITERATION ((mp_obj_t)8) -#define MP_OBJ_SENTINEL ((mp_obj_t)12) +#define MP_OBJ_STOP_ITERATION ((mp_obj_t)4) +#define MP_OBJ_SENTINEL ((mp_obj_t)8) #endif // These macros check for small int, qstr or object, and access small int and qstr values @@ -256,15 +253,15 @@ struct _mp_obj_type_t { mp_make_new_fun_t make_new; // to make an instance of the type mp_call_fun_t call; - mp_unary_op_fun_t unary_op; // can return MP_OBJ_NOT_SUPPORTED if op not supported - mp_binary_op_fun_t binary_op; // can return MP_OBJ_NOT_SUPPORTED if op not supported + mp_unary_op_fun_t unary_op; // can return MP_OBJ_NULL if op not supported + mp_binary_op_fun_t binary_op; // can return MP_OBJ_NULL if op not supported mp_load_attr_fun_t load_attr; mp_store_attr_fun_t store_attr; // if value is MP_OBJ_NULL, then delete that attribute mp_subscr_fun_t subscr; // implements load, store, delete subscripting // value=MP_OBJ_NULL means delete, value=MP_OBJ_SENTINEL means load, else store - // can return MP_OBJ_NOT_SUPPORTED + // can return MP_OBJ_NULL if op not supported mp_fun_1_t getiter; mp_fun_1_t iternext; // may return MP_OBJ_STOP_ITERATION as an optimisation instead of raising StopIteration() (with no args) @@ -483,11 +480,11 @@ typedef struct _mp_obj_float_t { mp_float_t value; } mp_obj_float_t; mp_float_t mp_obj_float_get(mp_obj_t self_in); -mp_obj_t mp_obj_float_binary_op(int op, mp_float_t lhs_val, mp_obj_t rhs); // can return MP_OBJ_NOT_SUPPORTED +mp_obj_t mp_obj_float_binary_op(int op, mp_float_t lhs_val, mp_obj_t rhs); // can return MP_OBJ_NULL if op not supported // complex void mp_obj_complex_get(mp_obj_t self_in, mp_float_t *real, mp_float_t *imag); -mp_obj_t mp_obj_complex_binary_op(int op, mp_float_t lhs_real, mp_float_t lhs_imag, mp_obj_t rhs_in); // can return MP_OBJ_NOT_SUPPORTED +mp_obj_t mp_obj_complex_binary_op(int op, mp_float_t lhs_real, mp_float_t lhs_imag, mp_obj_t rhs_in); // can return MP_OBJ_NULL if op not supported #endif // tuple diff --git a/py/objarray.c b/py/objarray.c index 81ab57139a3a1c7ff9d83d2bf931828e5676afb9..d973a4c563123c51f225022630a96e4f6c3cc7eb 100644 --- a/py/objarray.c +++ b/py/objarray.c @@ -140,7 +140,7 @@ STATIC mp_obj_t array_unary_op(int op, mp_obj_t o_in) { switch (op) { case MP_UNARY_OP_BOOL: return MP_BOOL(o->len != 0); case MP_UNARY_OP_LEN: return MP_OBJ_NEW_SMALL_INT(o->len); - default: return MP_OBJ_NOT_SUPPORTED; + default: return MP_OBJ_NULL; // op not supported } } @@ -166,7 +166,7 @@ STATIC mp_obj_t array_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value // TODO implement // TODO: confirmed that both bytearray and array.array support // slice deletion - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } else { mp_obj_array_t *o = self_in; if (MP_OBJ_IS_TYPE(index_in, &mp_type_slice)) { @@ -174,7 +174,7 @@ STATIC mp_obj_t array_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value // Only getting a slice is suported so far, not assignment // TODO: confirmed that both bytearray and array.array support // slice assignment (incl. of different size) - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } machine_uint_t start, stop; if (!mp_seq_get_fast_slice_indexes(o->len, index_in, &start, &stop)) { diff --git a/py/objbool.c b/py/objbool.c index e31e7a2a425fe016842dfdc59f6b8526df5809cc..4fe7a193410a2d73d44ba2ab412a87474e905860 100644 --- a/py/objbool.c +++ b/py/objbool.c @@ -76,7 +76,7 @@ STATIC mp_obj_t bool_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { if (MP_BINARY_OP_OR <= op && op <= MP_BINARY_OP_NOT_EQUAL) { return mp_binary_op(op, MP_OBJ_NEW_SMALL_INT((machine_int_t)mp_obj_is_true(lhs_in)), rhs_in); } - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } const mp_obj_type_t mp_type_bool = { diff --git a/py/objcomplex.c b/py/objcomplex.c index 18e0edc519f61e900ef4412f4efa8f80b5bf7be0..80a13c6d8fef447b11244008b1d98aaee917e694 100644 --- a/py/objcomplex.c +++ b/py/objcomplex.c @@ -123,7 +123,7 @@ STATIC mp_obj_t complex_unary_op(int op, mp_obj_t o_in) { case MP_UNARY_OP_BOOL: return MP_BOOL(o->real != 0 || o->imag != 0); case MP_UNARY_OP_POSITIVE: return o_in; case MP_UNARY_OP_NEGATIVE: return mp_obj_new_complex(-o->real, -o->imag); - default: return MP_OBJ_NOT_SUPPORTED; + default: return MP_OBJ_NULL; // op not supported } } @@ -233,7 +233,7 @@ mp_obj_t mp_obj_complex_binary_op(int op, mp_float_t lhs_real, mp_float_t lhs_im case MP_BINARY_OP_EQUAL: return MP_BOOL(lhs_real == rhs_real && lhs_imag == rhs_imag); default: - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } return mp_obj_new_complex(lhs_real, lhs_imag); } diff --git a/py/objdict.c b/py/objdict.c index 9d4ebb6279dcb44d048bb8aaf3fdd3739a0d7072..f41eacd9391220e33150d968fe12fbb687c8d01c 100644 --- a/py/objdict.c +++ b/py/objdict.c @@ -103,7 +103,7 @@ STATIC mp_obj_t dict_unary_op(int op, mp_obj_t self_in) { switch (op) { case MP_UNARY_OP_BOOL: return MP_BOOL(self->map.used != 0); case MP_UNARY_OP_LEN: return MP_OBJ_NEW_SMALL_INT((machine_int_t)self->map.used); - default: return MP_OBJ_NOT_SUPPORTED; + default: return MP_OBJ_NULL; // op not supported } } @@ -140,7 +140,7 @@ STATIC mp_obj_t dict_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { } default: // op not supported - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; } } @@ -463,13 +463,13 @@ STATIC void dict_view_print(void (*print)(void *env, const char *fmt, ...), void } STATIC mp_obj_t dict_view_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { - /* only supported for the 'keys' kind until sets and dicts are refactored */ + // only supported for the 'keys' kind until sets and dicts are refactored mp_obj_dict_view_t *o = lhs_in; if (o->kind != MP_DICT_VIEW_KEYS) { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } if (op != MP_BINARY_OP_IN) { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } return dict_binary_op(op, o->dict, rhs_in); } diff --git a/py/objfloat.c b/py/objfloat.c index e27942143d0708403d2682e9c5af26c60995313a..6732f31215f53122320c9b683d89b41f35b733d4 100644 --- a/py/objfloat.c +++ b/py/objfloat.c @@ -96,7 +96,7 @@ STATIC mp_obj_t float_unary_op(int op, mp_obj_t o_in) { case MP_UNARY_OP_BOOL: return MP_BOOL(o->value != 0); case MP_UNARY_OP_POSITIVE: return o_in; case MP_UNARY_OP_NEGATIVE: return mp_obj_new_float(-o->value); - default: return MP_OBJ_NOT_SUPPORTED; + default: return MP_OBJ_NULL; // op not supported } } @@ -165,7 +165,7 @@ mp_obj_t mp_obj_float_binary_op(int op, mp_float_t lhs_val, mp_obj_t rhs_in) { case MP_BINARY_OP_MORE_EQUAL: return MP_BOOL(lhs_val >= rhs_val); default: - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } return mp_obj_new_float(lhs_val); } diff --git a/py/objfun.c b/py/objfun.c index 27cba3abe34fde16a076b3058942579ddf94e3b8..26dfe0b2e25dd5af80e82a078d40e5ccec1e5456 100644 --- a/py/objfun.c +++ b/py/objfun.c @@ -59,7 +59,7 @@ STATIC mp_obj_t fun_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { // we don't even need to check for 2nd arg type. return MP_BOOL(lhs_in == rhs_in); } - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } STATIC mp_obj_t fun_native_call(mp_obj_t self_in, uint n_args, uint n_kw, const mp_obj_t *args) { diff --git a/py/objint.c b/py/objint.c index 3aaf5107c4efe9c56600b9a47ceb7532e38283fe..a3b3554008b09342d1df42d2725e88e151e9520b 100644 --- a/py/objint.c +++ b/py/objint.c @@ -216,7 +216,7 @@ bool mp_obj_int_is_positive(mp_obj_t self_in) { // This is called for operations on SMALL_INT that are not handled by mp_unary_op mp_obj_t mp_obj_int_unary_op(int op, mp_obj_t o_in) { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } // This is called for operations on SMALL_INT that are not handled by mp_binary_op @@ -285,7 +285,7 @@ mp_obj_t mp_obj_int_binary_op_extra_cases(int op, mp_obj_t lhs_in, mp_obj_t rhs_ return mp_binary_op(op, rhs_in, lhs_in); } } - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } // this is a classmethod diff --git a/py/objint_longlong.c b/py/objint_longlong.c index a9aea3931257f2bcfca708c62e5df8aca0c64502..1e0167b46403c8c84fc63d570fc989a596fd3bd2 100644 --- a/py/objint_longlong.c +++ b/py/objint_longlong.c @@ -64,7 +64,7 @@ mp_obj_t mp_obj_int_unary_op(int op, mp_obj_t o_in) { case MP_UNARY_OP_POSITIVE: return o_in; case MP_UNARY_OP_NEGATIVE: return mp_obj_new_int_from_ll(-o->val); case MP_UNARY_OP_INVERT: return mp_obj_new_int_from_ll(~o->val); - default: return MP_OBJ_NOT_SUPPORTED; + default: return MP_OBJ_NULL; // op not supported } } @@ -77,7 +77,7 @@ mp_obj_t mp_obj_int_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { } else if (MP_OBJ_IS_TYPE(lhs_in, &mp_type_int)) { lhs_val = ((mp_obj_int_t*)lhs_in)->val; } else { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } if (MP_OBJ_IS_SMALL_INT(rhs_in)) { @@ -135,7 +135,7 @@ mp_obj_t mp_obj_int_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { return MP_BOOL(lhs_val == rhs_val); default: - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } } diff --git a/py/objint_mpz.c b/py/objint_mpz.c index 32c8595f5338c5daf2b8a18df816fc51ae22cb41..2df3232e9cc65dafaf32ae614c28778dadf18eeb 100644 --- a/py/objint_mpz.c +++ b/py/objint_mpz.c @@ -90,7 +90,7 @@ mp_obj_t mp_obj_int_unary_op(int op, mp_obj_t o_in) { case MP_UNARY_OP_POSITIVE: return o_in; case MP_UNARY_OP_NEGATIVE: { mp_obj_int_t *o2 = mp_obj_int_new_mpz(); mpz_neg_inpl(&o2->mpz, &o->mpz); return o2; } case MP_UNARY_OP_INVERT: { mp_obj_int_t *o2 = mp_obj_int_new_mpz(); mpz_not_inpl(&o2->mpz, &o->mpz); return o2; } - default: return MP_OBJ_NOT_SUPPORTED; + default: return MP_OBJ_NULL; // op not supported } } @@ -108,7 +108,7 @@ mp_obj_t mp_obj_int_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { zlhs = &((mp_obj_int_t*)lhs_in)->mpz; } else { // unsupported type - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; } // if rhs is small int, then lhs was not (otherwise mp_binary_op handles it) @@ -213,7 +213,7 @@ mp_obj_t mp_obj_int_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { break; default: - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } return res; @@ -233,7 +233,7 @@ mp_obj_t mp_obj_int_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { return MP_BOOL(cmp == 0); default: - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } } } diff --git a/py/objlist.c b/py/objlist.c index 0ef685daeb12e7ba97f5e5d309b05f5ac2ff19e5..ee74926923e24674a36b6a97521945bccf7e0202 100644 --- a/py/objlist.c +++ b/py/objlist.c @@ -103,7 +103,7 @@ STATIC mp_obj_t list_unary_op(int op, mp_obj_t self_in) { switch (op) { case MP_UNARY_OP_BOOL: return MP_BOOL(self->len != 0); case MP_UNARY_OP_LEN: return MP_OBJ_NEW_SMALL_INT(self->len); - default: return MP_OBJ_NOT_SUPPORTED; + default: return MP_OBJ_NULL; // op not supported } } @@ -112,7 +112,7 @@ STATIC mp_obj_t list_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) { switch (op) { case MP_BINARY_OP_ADD: { if (!MP_OBJ_IS_TYPE(rhs, &mp_type_list)) { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } mp_obj_list_t *p = rhs; mp_obj_list_t *s = list_new(o->len + p->len); @@ -121,7 +121,7 @@ STATIC mp_obj_t list_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) { } case MP_BINARY_OP_INPLACE_ADD: { if (!MP_OBJ_IS_TYPE(rhs, &mp_type_list)) { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } list_extend(lhs, rhs); return o; @@ -129,7 +129,7 @@ STATIC mp_obj_t list_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) { case MP_BINARY_OP_MULTIPLY: { machine_int_t n; if (!mp_obj_get_int_maybe(rhs, &n)) { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } mp_obj_list_t *s = list_new(o->len * n); mp_seq_multiply(o->items, sizeof(*o->items), o->len, n, s->items); @@ -143,7 +143,7 @@ STATIC mp_obj_t list_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) { return MP_BOOL(list_cmp_helper(op, lhs, rhs)); default: - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } } diff --git a/py/objnone.c b/py/objnone.c index bb4e7e5608adaa89c9675d6113bfa3c06ca20936..165c8e5a43e92a079570bc6644063260493190dc 100644 --- a/py/objnone.c +++ b/py/objnone.c @@ -44,7 +44,7 @@ STATIC void none_print(void (*print)(void *env, const char *fmt, ...), void *env STATIC mp_obj_t none_unary_op(int op, mp_obj_t o_in) { switch (op) { case MP_UNARY_OP_BOOL: return mp_const_false; - default: return MP_OBJ_NOT_SUPPORTED; + default: return MP_OBJ_NULL; // op not supported } } diff --git a/py/objset.c b/py/objset.c index a6f1fe7339ad0fc89a1aabb17bafb9a148251d24..32c194db12a61f588bcec325af17b9a5e81464fd 100644 --- a/py/objset.c +++ b/py/objset.c @@ -475,7 +475,7 @@ STATIC mp_obj_t set_unary_op(int op, mp_obj_t self_in) { switch (op) { case MP_UNARY_OP_BOOL: return MP_BOOL(self->set.used != 0); case MP_UNARY_OP_LEN: return MP_OBJ_NEW_SMALL_INT((machine_int_t)self->set.used); - default: return MP_OBJ_NOT_SUPPORTED; + default: return MP_OBJ_NULL; // op not supported } } @@ -514,7 +514,7 @@ STATIC mp_obj_t set_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) { return MP_BOOL(elem != NULL); } default: - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } } diff --git a/py/objstr.c b/py/objstr.c index dcf4de82dec9029ba77dfc8da123b1a5e2123995..61fda12a3f3573db8c611d10bdb19b7fc6b6cab9 100644 --- a/py/objstr.c +++ b/py/objstr.c @@ -296,7 +296,7 @@ STATIC mp_obj_t str_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { case MP_BINARY_OP_MULTIPLY: { if (!MP_OBJ_IS_SMALL_INT(rhs_in)) { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } int n = MP_OBJ_SMALL_INT_VALUE(rhs_in); byte *data; @@ -341,7 +341,7 @@ uncomparable: } } - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } STATIC mp_obj_t str_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) { @@ -365,7 +365,7 @@ STATIC mp_obj_t str_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) { return mp_obj_new_str(self_data + index_val, 1, true); } } else { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } } diff --git a/py/objtuple.c b/py/objtuple.c index 44ee95dd961e86b75e32873bf9d19538307400f4..46515378f090af5a9d3ab42c64ad5fd2f87c14a8 100644 --- a/py/objtuple.c +++ b/py/objtuple.c @@ -120,7 +120,7 @@ mp_obj_t mp_obj_tuple_unary_op(int op, mp_obj_t self_in) { switch (op) { case MP_UNARY_OP_BOOL: return MP_BOOL(self->len != 0); case MP_UNARY_OP_LEN: return MP_OBJ_NEW_SMALL_INT(self->len); - default: return MP_OBJ_NOT_SUPPORTED; + default: return MP_OBJ_NULL; // op not supported } } @@ -129,7 +129,7 @@ mp_obj_t mp_obj_tuple_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) { switch (op) { case MP_BINARY_OP_ADD: { if (!mp_obj_is_subclass_fast(mp_obj_get_type(rhs), (mp_obj_t)&mp_type_tuple)) { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } mp_obj_tuple_t *p = rhs; mp_obj_tuple_t *s = mp_obj_new_tuple(o->len + p->len, NULL); @@ -138,7 +138,7 @@ mp_obj_t mp_obj_tuple_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) { } case MP_BINARY_OP_MULTIPLY: { if (!MP_OBJ_IS_SMALL_INT(rhs)) { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } int n = MP_OBJ_SMALL_INT_VALUE(rhs); mp_obj_tuple_t *s = mp_obj_new_tuple(o->len * n, NULL); @@ -153,8 +153,7 @@ mp_obj_t mp_obj_tuple_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) { return MP_BOOL(tuple_cmp_helper(op, lhs, rhs)); default: - // op not supported - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } } @@ -176,7 +175,7 @@ mp_obj_t mp_obj_tuple_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) { uint index_value = mp_get_index(self->base.type, self->len, index, false); return self->items[index_value]; } else { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } } diff --git a/py/objtype.c b/py/objtype.c index d099e3a45a3fb9e209cfb0472262d792b9993743..2e1c56416e5ad6998342ed354c9bdc7c0a9aa6f7 100644 --- a/py/objtype.c +++ b/py/objtype.c @@ -287,7 +287,7 @@ STATIC mp_obj_t instance_unary_op(int op, mp_obj_t self_in) { qstr op_name = unary_op_method_name[op]; /* Still try to lookup native slot if (op_name == 0) { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; } */ mp_obj_t member[2] = {MP_OBJ_NULL}; @@ -297,7 +297,7 @@ STATIC mp_obj_t instance_unary_op(int op, mp_obj_t self_in) { } else if (member[0] != MP_OBJ_NULL) { return mp_call_function_1(member[0], self_in); } else { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } } @@ -374,7 +374,7 @@ STATIC mp_obj_t instance_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { qstr op_name = binary_op_method_name[op]; /* Still try to lookup native slot if (op_name == 0) { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; } */ mp_obj_t dest[3] = {MP_OBJ_NULL}; @@ -385,7 +385,7 @@ STATIC mp_obj_t instance_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { dest[2] = rhs_in; return mp_call_method_n_kw(1, 0, dest); } else { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } } @@ -499,7 +499,7 @@ STATIC mp_obj_t instance_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value return mp_const_none; } } else { - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } } @@ -632,7 +632,7 @@ STATIC mp_obj_t type_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) { return MP_BOOL(lhs_in == rhs_in); default: - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } } diff --git a/py/runtime.c b/py/runtime.c index 7c89ec4e2ea12e481cb9d0d346b4473f6831a506..ea75280ce4038b3b6a6dd25444ec4577f381649b 100644 --- a/py/runtime.c +++ b/py/runtime.c @@ -200,7 +200,7 @@ mp_obj_t mp_unary_op(int op, mp_obj_t arg) { mp_obj_type_t *type = mp_obj_get_type(arg); if (type->unary_op != NULL) { mp_obj_t result = type->unary_op(op, arg); - if (result != MP_OBJ_NOT_SUPPORTED) { + if (result != MP_OBJ_NULL) { return result; } } @@ -439,7 +439,7 @@ mp_obj_t mp_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) { mp_obj_type_t *type = mp_obj_get_type(rhs); if (type->binary_op != NULL) { mp_obj_t res = type->binary_op(op, rhs, lhs); - if (res != MP_OBJ_NOT_SUPPORTED) { + if (res != MP_OBJ_NULL) { return res; } } @@ -467,7 +467,7 @@ generic_binary_op: type = mp_obj_get_type(lhs); if (type->binary_op != NULL) { mp_obj_t result = type->binary_op(op, lhs, rhs); - if (result != MP_OBJ_NOT_SUPPORTED) { + if (result != MP_OBJ_NULL) { return result; } } diff --git a/stmhal/modstm.c b/stmhal/modstm.c index e645af1229f3cd413d624981628196d8d2dd2d7a..520c8e51bd5059a03076a42b218daa960cf7579f 100644 --- a/stmhal/modstm.c +++ b/stmhal/modstm.c @@ -81,7 +81,7 @@ STATIC mp_obj_t stm_mem_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) stm_mem_obj_t *self = self_in; if (value == MP_OBJ_NULL) { // delete - return MP_OBJ_NOT_SUPPORTED; + return MP_OBJ_NULL; // op not supported } else if (value == MP_OBJ_SENTINEL) { // load uint32_t addr = get_read_addr(index, self->elem_size);