py/runtime: If inplace binop fails then try corresponding normal binop.
The code that handles inplace-operator to normal-binary-operator fallback is moved in this commit from py/objtype.c to py/runtime.c, making it apply to all types, not just user classes. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -625,6 +625,15 @@ generic_binary_op:
|
||||
}
|
||||
}
|
||||
|
||||
// If this was an inplace method, fallback to the corresponding normal method.
|
||||
// https://docs.python.org/3/reference/datamodel.html#object.__iadd__ :
|
||||
// "If a specific method is not defined, the augmented assignment falls back
|
||||
// to the normal methods."
|
||||
if (op >= MP_BINARY_OP_INPLACE_OR && op <= MP_BINARY_OP_INPLACE_POWER) {
|
||||
op += MP_BINARY_OP_OR - MP_BINARY_OP_INPLACE_OR;
|
||||
goto generic_binary_op;
|
||||
}
|
||||
|
||||
#if MICROPY_PY_REVERSE_SPECIAL_METHODS
|
||||
if (op >= MP_BINARY_OP_OR && op <= MP_BINARY_OP_POWER) {
|
||||
mp_obj_t t = rhs;
|
||||
|
||||
Reference in New Issue
Block a user