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, 4 insertions, 11 deletions
diff --git a/py/obj.c b/py/obj.c
index 7e26d4c7f..dc6919467 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -298,18 +298,11 @@ mp_int_t mp_obj_get_int(mp_const_obj_t arg) {
// This function essentially performs implicit type conversion to int
// Note that Python does NOT provide implicit type conversion from
// float to int in the core expression language, try some_list[1.0].
- if (arg == mp_const_false) {
- return 0;
- } else if (arg == mp_const_true) {
- return 1;
- } else if (mp_obj_is_small_int(arg)) {
- return MP_OBJ_SMALL_INT_VALUE(arg);
- } else if (mp_obj_is_exact_type(arg, &mp_type_int)) {
- return mp_obj_int_get_checked(arg);
- } else {
- mp_obj_t res = mp_unary_op(MP_UNARY_OP_INT, (mp_obj_t)arg);
- return mp_obj_int_get_checked(res);
+ mp_int_t val;
+ if (!mp_obj_get_int_maybe(arg, &val)) {
+ mp_raise_TypeError_int_conversion(arg);
}
+ return val;
}
mp_int_t mp_obj_get_int_truncated(mp_const_obj_t arg) {