@@ -140,10 +140,8 @@ MP_DEFINE_CONST_FUN_OBJ_1(mp_builtin_callable_obj, mp_builtin_callable);
140140static mp_obj_t mp_builtin_chr (mp_obj_t o_in ) {
141141 int ord = mp_obj_get_int (o_in );
142142 if (0 <= ord && ord <= 0x10ffff ) {
143- char * str = m_new (char , 2 );
144- str [0 ] = ord ;
145- str [1 ] = '\0' ;
146- return mp_obj_new_str (qstr_from_str_take (str , 2 ));
143+ char str [2 ] = {ord , '\0' };
144+ return mp_obj_new_str (qstr_from_strn_copy (str , 1 ));
147145 } else {
148146 nlr_jump (mp_obj_new_exception_msg (MP_QSTR_ValueError , "chr() arg not in range(0x110000)" ));
149147 }
@@ -310,6 +308,14 @@ static mp_obj_t mp_builtin_range(int n_args, const mp_obj_t *args) {
310308
311309MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (mp_builtin_range_obj , 1 , 3 , mp_builtin_range );
312310
311+ static mp_obj_t mp_builtin_repr (mp_obj_t o_in ) {
312+ vstr_t * vstr = vstr_new ();
313+ mp_obj_print_helper ((void (* )(void * env , const char * fmt , ...))vstr_printf , vstr , o_in );
314+ return mp_obj_new_str (qstr_from_str_take (vstr -> buf , vstr -> alloc ));
315+ }
316+
317+ MP_DEFINE_CONST_FUN_OBJ_1 (mp_builtin_repr_obj , mp_builtin_repr );
318+
313319static mp_obj_t mp_builtin_sum (int n_args , const mp_obj_t * args ) {
314320 assert (1 <= n_args && n_args <= 2 );
315321 mp_obj_t value ;
@@ -324,6 +330,7 @@ static mp_obj_t mp_builtin_sum(int n_args, const mp_obj_t *args) {
324330 }
325331 return value ;
326332}
333+
327334MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (mp_builtin_sum_obj , 1 , 2 , mp_builtin_sum );
328335
329336static mp_obj_t mp_builtin_sorted (mp_obj_t args , mp_map_t * kwargs ) {
@@ -343,4 +350,5 @@ static mp_obj_t mp_builtin_sorted(mp_obj_t args, mp_map_t *kwargs) {
343350
344351 return self ;
345352}
353+
346354MP_DEFINE_CONST_FUN_OBJ_KW (mp_builtin_sorted_obj , 1 , mp_builtin_sorted );
0 commit comments