diff options
Diffstat (limited to 'py/objint.c')
-rw-r--r-- | py/objint.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/py/objint.c b/py/objint.c index 1a3ad8694..e54cdb89b 100644 --- a/py/objint.c +++ b/py/objint.c @@ -48,10 +48,10 @@ STATIC mp_obj_t mp_obj_int_make_new(const mp_obj_type_t *type_in, size_t n_args, case 0: return MP_OBJ_NEW_SMALL_INT(0); - case 1: - if (mp_obj_is_int(args[0])) { - // already an int (small or long), just return it - return args[0]; + case 1: { + mp_obj_t o = mp_unary_op(MP_UNARY_OP_INT_MAYBE, args[0]); + if (o != MP_OBJ_NULL) { + return o; } else if (mp_obj_is_str_or_bytes(args[0])) { // a string, parse it size_t l; @@ -62,8 +62,9 @@ STATIC mp_obj_t mp_obj_int_make_new(const mp_obj_type_t *type_in, size_t n_args, return mp_obj_new_int_from_float(mp_obj_float_get(args[0])); #endif } else { - return mp_unary_op(MP_UNARY_OP_INT, args[0]); + mp_raise_TypeError_int_conversion(args[0]); } + } case 2: default: { |