py/objarray: Disallow memoryview addition.

Following CPython.  This is important for subsequent commits to work
correctly.

Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
Damien George 2023-05-12 23:14:44 +10:00
parent 9accb7dd44
commit ca9068e0ef
2 changed files with 17 additions and 1 deletions

View File

@ -292,6 +292,12 @@ STATIC mp_obj_t array_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs
mp_obj_array_t *lhs = MP_OBJ_TO_PTR(lhs_in);
switch (op) {
case MP_BINARY_OP_ADD: {
#if MICROPY_PY_BUILTINS_MEMORYVIEW
if (lhs->base.type == &mp_type_memoryview) {
return MP_OBJ_NULL; // op not supported
}
#endif
// allow to add anything that has the buffer protocol (extension to CPython)
mp_buffer_info_t lhs_bufinfo;
mp_buffer_info_t rhs_bufinfo;

View File

@ -6,8 +6,18 @@ except:
raise SystemExit
# unsupported binary operators
try:
memoryview(b"") + b""
except TypeError:
print("TypeError")
try:
memoryview(b"") + memoryview(b"")
except TypeError:
print("TypeError")
try:
m = memoryview(bytearray())
m += bytearray()
except TypeError:
print('TypeError')
print("TypeError")