summaryrefslogtreecommitdiffstatshomepage
path: root/py/runtime.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/runtime.c')
-rw-r--r--py/runtime.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/py/runtime.c b/py/runtime.c
index ef07e39bff..499905a0fa 100644
--- a/py/runtime.c
+++ b/py/runtime.c
@@ -386,9 +386,19 @@ mp_obj_t mp_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) {
}
#if MICROPY_ENABLE_FLOAT
} else if (MP_OBJ_IS_TYPE(rhs, &mp_type_float)) {
- return mp_obj_float_binary_op(op, lhs_val, rhs);
+ mp_obj_t res = mp_obj_float_binary_op(op, lhs_val, rhs);
+ if (res == MP_OBJ_NULL) {
+ goto unsupported_op;
+ } else {
+ return res;
+ }
} else if (MP_OBJ_IS_TYPE(rhs, &mp_type_complex)) {
- return mp_obj_complex_binary_op(op, lhs_val, 0, rhs);
+ mp_obj_t res = mp_obj_complex_binary_op(op, lhs_val, 0, rhs);
+ if (res == MP_OBJ_NULL) {
+ goto unsupported_op;
+ } else {
+ return res;
+ }
#endif
}
}
@@ -438,6 +448,7 @@ generic_binary_op:
// TODO implement dispatch for reverse binary ops
// TODO specify in error message what the operator is
+unsupported_op:
nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_TypeError,
"unsupported operand types for binary operator: '%s', '%s'",
mp_obj_get_type_str(lhs), mp_obj_get_type_str(rhs)));