summaryrefslogtreecommitdiff
path: root/py/obj.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/obj.c')
-rw-r--r--py/obj.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/py/obj.c b/py/obj.c
index 51f6d85de..5a05ea58c 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -355,9 +355,13 @@ bool mp_obj_get_float_maybe(mp_obj_t arg, mp_float_t *value) {
} else if (mp_obj_is_float(arg)) {
val = mp_obj_float_get(arg);
} else {
- return false;
+ arg = mp_unary_op(MP_UNARY_OP_FLOAT_MAYBE, (mp_obj_t)arg);
+ if (arg != MP_OBJ_NULL && mp_obj_is_float(arg)) {
+ val = mp_obj_float_get(arg);
+ } else {
+ return false;
+ }
}
-
*value = val;
return true;
}
@@ -399,7 +403,12 @@ bool mp_obj_get_complex_maybe(mp_obj_t arg, mp_float_t *real, mp_float_t *imag)
} else if (mp_obj_is_type(arg, &mp_type_complex)) {
mp_obj_complex_get(arg, real, imag);
} else {
- return false;
+ arg = mp_unary_op(MP_UNARY_OP_COMPLEX_MAYBE, (mp_obj_t)arg);
+ if (arg != MP_OBJ_NULL && mp_obj_is_type(arg, &mp_type_complex)) {
+ mp_obj_complex_get(arg, real, imag);
+ } else {
+ return false;
+ }
}
return true;
}