8000 py: Make tuple and list use mp_int_t/mp_uint_t. · sparkfun/circuitpython@9c4cbe2 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9c4cbe2

Browse files
committed
py: Make tuple and list use mp_int_t/mp_uint_t.
Part of code cleanup, to resolve issue adafruit#50.
1 parent 93965e7 commit 9c4cbe2

File tree

10 files changed

+52
-52
lines changed

10 files changed

+52
-52
lines changed

py/builtinimport.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ STATIC mp_import_stat_t stat_dir_or_file(vstr_t *path) {
7070

7171
STATIC mp_import_stat_t find_file(const char *file_str, uint file_len, vstr_t *dest) {
7272
// extract the list of paths
73-
uint path_num = 0;
73+
mp_uint_t path_num = 0;
7474
mp_obj_t *path_items;
7575
#if MICROPY_PY_SYS
7676
mp_obj_list_get(mp_sys_path, &path_num, &path_items);

py/obj.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ void mp_obj_get_complex(mp_obj_t arg, mp_float_t *real, mp_float_t *imag) {
308308
#endif
309309
#endif
310310

311-
void mp_obj_get_array(mp_obj_t o, uint *len, mp_obj_t **items) {
311+
void mp_obj_get_array(mp_obj_t o, mp_uint_t *len, mp_obj_t **items) {
312312
if (MP_OBJ_IS_TYPE(o, &mp_type_tuple)) {
313313
mp_obj_tuple_get(o, len, items);
314314
} else if (MP_OBJ_IS_TYPE(o, &mp_type_list)) {
@@ -318,9 +318,9 @@ void mp_obj_get_array(mp_obj_t o, uint *len, mp_obj_t **items) {
318318
}
319319
}
320320

321-
void mp_obj_get_array_fixed_n(mp_obj_t o, uint len, mp_obj_t **items) {
321+
void mp_obj_get_array_fixed_n(mp_obj_t o, mp_uint_t len, mp_obj_t **items) {
322322
if (MP_OBJ_IS_TYPE(o, &mp_type_tuple) || MP_OBJ_IS_TYPE(o, &mp_type_list)) {
323-
uint seq_len;
323+
mp_uint_t seq_len;
324324
if (MP_OBJ_IS_TYPE(o, &mp_type_tuple)) {
325325
mp_obj_tuple_get(o, &seq_len, items);
326326
} else {
@@ -335,7 +335,7 @@ void mp_obj_get_array_fixed_n(mp_obj_t o, uint len, mp_obj_t **items) {
335335
}
336336

337337
// is_slice determines whether the index is a slice index
338-
uint mp_get_index(const mp_obj_type_t *type, mp_uint_t len, mp_obj_t index, bool is_slice) {
338+
mp_uint_t mp_get_index(const mp_obj_type_t *type, mp_uint_t len, mp_obj_t index, bool is_slice) {
339339
mp_int_t i;
340340
if (MP_OBJ_IS_SMALL_INT(index)) {
341341
i = MP_OBJ_SMALL_INT_VALUE(index);

py/obj.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -384,8 +384,8 @@ mp_obj_t mp_obj_new_fun_viper(mp_uint_t n_args, void *fun_data, mp_uint_t type_s
384384
mp_obj_t mp_obj_new_fun_asm(mp_uint_t n_args, void *fun_data);
385385
mp_obj_t mp_obj_new_gen_wrap(mp_obj_t fun);
386386
mp_obj_t mp_obj_new_closure(mp_obj_t fun, uint n_closed, const mp_obj_t *closed);
387-
mp_obj_t mp_obj_new_tuple(uint n, const mp_obj_t *items);
388-
mp_obj_t mp_obj_new_list(uint n, mp_obj_t *items);
387+
mp_obj_t mp_obj_new_tuple(mp_uint_t n, const mp_obj_t *items);
388+
mp_obj_t mp_obj_new_list(mp_uint_t n, mp_obj_t *items);
389389
mp_obj_t mp_obj_new_dict(mp_uint_t n_args);
390390
mp_obj_t mp_obj_new_set(mp_uint_t n_args, mp_obj_t *items);
391391
mp_obj_t mp_obj_new_slice(mp_obj_t start, mp_obj_t stop, mp_obj_t step);
@@ -425,9 +425,9 @@ mp_float_t mp_obj_get_float(mp_obj_t self_in);
425425
void mp_obj_get_complex(mp_obj_t self_in, mp_float_t *real, mp_float_t *imag);
426426
#endif
427427
//qstr mp_obj_get_qstr(mp_obj_t arg);
428-
void mp_obj_get_array(mp_obj_t o, uint *len, mp_obj_t **items);
429-
void mp_obj_get_array_fixed_n(mp_obj_t o, uint len, mp_obj_t **items);
430-
uint mp_get_index(const mp_obj_type_t *type, mp_uint_t len, mp_obj_t index, bool is_slice);
428+
void mp_obj_get_array(mp_obj_t o, mp_uint_t *len, mp_obj_t **items);
429+
void mp_obj_get_array_fixed_n(mp_obj_t o, mp_uint_t len, mp_obj_t **items);
430+
mp_uint_t mp_get_index(const mp_obj_type_t *type, mp_uint_t len, mp_obj_t index, bool is_slice);
431431
mp_obj_t mp_obj_len(mp_obj_t o_in);
432432
mp_obj_t mp_obj_len_maybe(mp_obj_t o_in); /* may return MP_OBJ_NULL */
433433
mp_obj_t mp_obj_subscr(mp_obj_t base, mp_obj_t index, mp_obj_t val);
@@ -490,16 +490,16 @@ mp_obj_t mp_obj_complex_binary_op(mp_uint_t op, mp_float_t lhs_real, mp_float_t
490490
#endif
491491

492492
// tuple
493-
void mp_obj_tuple_get(mp_obj_t self_in, uint *len, mp_obj_t **items);
493+
void mp_obj_tuple_get(mp_obj_t self_in, mp_uint_t *len, mp_obj_t **items);
494494
void mp_obj_tuple_del(mp_obj_t self_in);
495495
mp_int_t mp_obj_tuple_hash(mp_obj_t self_in);
496496

497497
// list
498498
struct _mp_obj_list_t;
499-
void mp_obj_list_init(struct _mp_obj_list_t *o, uint n);
499+
void mp_obj_list_init(struct _mp_obj_list_t *o, mp_uint_t n);
500500
mp_obj_t mp_obj_list_append(mp_obj_t self_in, mp_obj_t arg);
501-
void mp_obj_list_get(mp_obj_t self_in, uint *len, mp_obj_t **items);
502-
void mp_obj_list_set_len(mp_obj_t self_in, uint len);
501+
void mp_obj_list_get(mp_obj_t self_in, mp_uint_t *len, mp_obj_t **items);
502+
void mp_obj_list_set_len(mp_obj_t self_in, mp_uint_t len);
503503
void mp_obj_list_store(mp_obj_t self_in, mp_obj_t index, mp_obj_t value);
504504
mp_obj_t mp_obj_list_sort(mp_uint_t n_args, const mp_obj_t *args, mp_map_t *kwargs);
505505

py/objexcept.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,7 @@ void mp_obj_exception_get_traceback(mp_obj_t self_in, mp_uint_t *n, mp_uint_t **
464464
*n = 0;
465465
*values = NULL;
466466
} else {
467-
uint n2;
467+
mp_uint_t n2;
468468
mp_obj_list_get(self->traceback, &n2, (mp_obj_t**)values);
469469
*n = n2;
470470
}

py/objlist.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
#include "runtime.h"
3737
#include "objlist.h"
3838

39-
STATIC mp_obj_t mp_obj_new_list_iterator(mp_obj_list_t *list, int cur);
40-
STATIC mp_obj_list_t *list_new(uint n);
39+
STATIC mp_obj_t mp_obj_new_list_iterator(mp_obj_list_t *list, mp_uint_t cur);
40+
STATIC mp_obj_list_t *list_new(mp_uint_t n);
4141
STATIC mp_obj_t list_extend(mp_obj_t self_in, mp_obj_t arg_in);
4242
STATIC mp_obj_t list_pop(mp_uint_t n_args, const mp_obj_t *args);
4343

@@ -50,7 +50,7 @@ STATIC mp_obj_t list_pop(mp_uint_t n_args, const mp_obj_t *args);
5050
STATIC void list_print(void (*print)(void *env, const char *fmt, ...), void *env, mp_obj_t o_in, mp_print_kind_t kind) {
5151
mp_obj_list_t *o = o_in;
5252
print(env, "[");
53-
for (int i = 0; i < o->len; i++) {
53+
for (mp_uint_t i = 0; i < o->len; i++) {
5454
if (i > 0) {
5555
print(env, ", ");
5656
}
@@ -188,7 +188,7 @@ STATIC mp_obj_t list_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
188188
return res;
189189
}
190190
#endif
191-
uint index_val = mp_get_index(self->base.type, self->len, index, false);
191+
mp_uint_t index_val = mp_get_index(self->base.type, self->len, index, false);
192192
return self->items[index_val];
193193
} else {
194194
#if MICROPY_PY_BUILTINS_SLICE
@@ -271,7 +271,7 @@ STATIC mp_obj_t list_pop(mp_uint_t n_args, const mp_obj_t *args) {
271271
if (self->len == 0) {
272272
nlr_raise(mp_obj_new_exception_msg(&mp_type_IndexError, "pop from empty list"));
273273
}
274-
uint index = mp_get_index(self->base.type, self->len, n_args == 1 ? MP_OBJ_NEW_SMALL_INT(-1) : args[1], false);
274+
mp_uint_t index = mp_get_index(self->base.type, self->len, n_args == 1 ? MP_OBJ_NEW_SMALL_INT(-1) : args[1], false);
275275
mp_obj_t ret = self->items[index];
276276
self->len -= 1;
277277
memmove(self->items + index, self->items + index + 1, (self->len - index) * sizeof(mp_obj_t));
@@ -286,7 +286,7 @@ STATIC mp_obj_t list_pop(mp_uint_t n_args, const mp_obj_t *args) {
286286

287287
// TODO make this conform to CPython's definition of sort
288288
STATIC void mp_quicksort(mp_obj_t *head, mp_obj_t *tail, mp_obj_t key_fn, bool reversed) {
289-
int op = reversed ? MP_BINARY_OP_MORE : MP_BINARY_OP_LESS;
289+
mp_uint_t op = reversed ? MP_BINARY_OP_MORE : MP_BINARY_OP_LESS;
290290
while (head < tail) {
291291
mp_obj_t *h = head - 1;
292292
mp_obj_t *t = tail;
@@ -442,37 +442,37 @@ const mp_obj_type_t mp_type_list = {
442442
.locals_dict = (mp_obj_t)&list_locals_dict,
443443
};
444444

445-
void mp_obj_list_init(mp_obj_list_t *o, uint n) {
445+
void mp_obj_list_init(mp_obj_list_t *o, mp_uint_t n) {
446446
o->base.type = &mp_type_list;
447447
o->alloc = n < LIST_MIN_ALLOC ? LIST_MIN_ALLOC : n;
448448
o->len = n;
449449
o->items = m_new(mp_obj_t, o->alloc);
450450
mp_seq_clear(o->items, n, o->alloc, sizeof(*o->items));
451451
}
452452

453-
STATIC mp_obj_list_t *list_new(uint n) {
453+
STATIC mp_obj_list_t *list_new(mp_uint_t n) {
454454
mp_obj_list_t *o = m_new_obj(mp_obj_list_t);
455455
mp_obj_list_init(o, n);
456456
return o;
457457
}
458458

459-
mp_obj_t mp_obj_new_list(uint n, mp_obj_t *items) {
459+
mp_obj_t mp_obj_new_list(mp_uint_t n, mp_obj_t *items) {
460460
mp_obj_list_t *o = list_new(n);
461461
if (items != NULL) {
462-
for (int i = 0; i < n; i++) {
462+
for (mp_uint_t i = 0; i < n; i++) {
463463
o->items[i] = items[i];
464464
}
465465
}
466466
return o;
467467
}
468468

469-
void mp_obj_list_get(mp_obj_t self_in, uint *len, mp_obj_t **items) {
469+
void mp_obj_list_get(mp_obj_t self_in, mp_uint_t *len, mp_obj_t **items) {
470470
mp_obj_list_t *self = self_in;
471471
*len = self->len;
472472
*items = self->items;
473473
}
474474

475-
void mp_obj_list_set_len(mp_obj_t self_in, uint len) {
475+
void mp_obj_list_set_len(mp_obj_t self_in, mp_uint_t len) {
476476
// trust that the caller knows what it's doing
477477
// TODO realloc if len got much smaller than alloc
478478
mp_obj_list_t *self = self_in;
@@ -481,7 +481,7 @@ void mp_obj_list_set_len(mp_obj_t self_in, uint len) {
481481

482482
void mp_obj_list_store(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
483483
mp_obj_list_t *self = self_in;
484-
uint i = mp_get_index(self->base.type, self->len, index, false);
484+
mp_uint_t i = mp_get_index(self->base.type, self->len, index, false);
485485
self->items[i] = value;
486486
}
487487

@@ -512,7 +512,7 @@ STATIC const mp_obj_type_t mp_type_list_it = {
512512
.iternext = list_it_iternext,
513513
};
514514

515-
mp_obj_t mp_obj_new_list_iterator(mp_obj_list_t *list, int cur) {
515+
mp_obj_t mp_obj_new_list_iterator(mp_obj_list_t *list, mp_uint_t cur) {
516516
mp_obj_list_it_t *o = m_new_obj(mp_obj_list_it_t);
517517
o->base.type = &mp_type_list_it;
518518
o->list = list;

py/objstr.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ mp_obj_t mp_obj_str_binary_op(mp_uint_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) {
307307

308308
case MP_BINARY_OP_MODULO: {
309309
mp_obj_t *args;
310-
uint n_args;
310+
mp_uint_t n_args;
311311
mp_obj_t dict = MP_OBJ_NULL;
312312
if (MP_OBJ_IS_TYPE(rhs_in, &mp_type_tuple)) {
313313
// TODO: Support tuple subclasses?
@@ -394,7 +394,7 @@ STATIC mp_obj_t str_join(mp_obj_t self_in, mp_obj_t arg) {
394394
GET_STR_DATA_LEN(self_in, sep_str, sep_len);
395395

396396
// process args
397-
uint seq_len;
397+
mp_uint_t seq_len;
398398
mp_obj_t *seq_items;
399399
if (MP_OBJ_IS_TYPE(arg, &mp_type_tuple)) {
400400
mp_obj_tuple_get(arg, &seq_len, &seq_items);

py/objtuple.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@
3636
#include "runtime.h"
3737
#include "objtuple.h"
3838

39-
STATIC mp_obj_t mp_obj_new_tuple_iterator(mp_obj_tuple_t *tuple, int cur);
39+
STATIC mp_obj_t mp_obj_new_tuple_iterator(mp_obj_tuple_t *tuple, mp_uint_t cur);
4040

4141
/******************************************************************************/
4242
/* tuple */
4343

4444
void mp_obj_tuple_print(void (*print)(void *env, const char *fmt, ...), void *env, mp_obj_t o_in, mp_print_kind_t kind) {
4545
mp_obj_tuple_t *o = o_in;
4646
print(env, "(");
47-
for (int i = 0; i < o->len; i++) {
47+
for (mp_uint_t i = 0; i < o->len; i++) {
4848
if (i > 0) {
4949
print(env, ", ");
5050
}
@@ -73,8 +73,8 @@ STATIC mp_obj_t mp_obj_tuple_make_new(mp_obj_t type_in, mp_uint_t n_args, mp_uin
7373

7474
// TODO optimise for cases where we know the length of the iterator
7575

76-
uint alloc = 4;
77-
uint len = 0;
76+
mp_uint_t alloc = 4;
77+
mp_uint_t len = 0;
7878
mp_obj_t *items = m_new(mp_obj_t, alloc);
7979

8080
mp_obj_t iterable = mp_getiter(args[0]);
@@ -176,7 +176,7 @@ mp_obj_t mp_obj_tuple_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
176176
return res;
177177
}
178178
#endif
179-
uint index_value = mp_get_index(self->base.type, self->len, index, false);
179+
mp_uint_t index_value = mp_get_index(self->base.type, self->len, index, false);
180180
return self->items[index_value];
181181
} else {
182182
return MP_OBJ_NULL; // op not supported
@@ -223,22 +223,22 @@ const mp_obj_type_t mp_type_tuple = {
223223
// the zero-length tuple
224224
const mp_obj_tuple_t mp_const_empty_tuple_obj = {{&mp_type_tuple}, 0};
225225

226-
mp_obj_t mp_obj_new_tuple(uint n, const mp_obj_t *items) {
226+
mp_obj_t mp_obj_new_tuple(mp_uint_t n, const mp_obj_t *items) {
227227
if (n == 0) {
228228
return mp_const_empty_tuple;
229229
}
230230
mp_obj_tuple_t *o = m_new_obj_var(mp_obj_tuple_t, mp_obj_t, n);
231231
o->base.type = &mp_type_tuple;
232232
o->len = n;
233233
if (items) {
234-
for (int i = 0; i < n; i++) {
234+
for (mp_uint_t i = 0; i < n; i++) {
235235
o->items[i] = items[i];
236236
}
237237
}
238238
return o;
239239
}
240240

241-
void mp_obj_tuple_get(mp_obj_t self_in, uint *len, mp_obj_t **items) {
241+
void mp_obj_tuple_get(mp_obj_t self_in, mp_uint_t *len, mp_obj_t **items) {
242242
assert(MP_OBJ_IS_TYPE(self_in, &mp_type_tuple));
243243
mp_obj_tuple_t *self = self_in;
244244
if (len) {
@@ -260,7 +260,7 @@ mp_int_t mp_obj_tuple_hash(mp_obj_t self_in) {
260260
mp_obj_tuple_t *self = self_in;
261261
// start hash with pointer to empty tuple, to make it fairly unique
262262
mp_int_t hash = (mp_int_t)mp_const_empty_tuple;
263-
for (uint i = 0; i < self->len; i++) {
263+
for (mp_uint_t i = 0; i < self->len; i++) {
264264
hash += mp_obj_hash(self->items[i]);
265265
}
266266
return hash;
@@ -293,7 +293,7 @@ STATIC const mp_obj_type_t mp_type_tuple_it = {
293293
.iternext = tuple_it_iternext,
294294
};
295295

296-
STATIC mp_obj_t mp_obj_new_tuple_iterator(mp_obj_tuple_t *tuple, int cur) {
296+
STATIC mp_obj_t mp_obj_new_tuple_iterator(mp_obj_tuple_t *tuple, mp_uint_t cur) {
297297
mp_obj_tuple_it_t *o = m_new_obj(mp_obj_tuple_it_t);
298298
o->base.type = &mp_type_tuple_it;
299299
o->tuple = tuple;

py/objtype.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ STATIC mp_obj_t mp_obj_new_instance(mp_obj_t class, uint subobjs) {
6565
}
6666

6767
STATIC int instance_count_native_bases(const mp_obj_type_t *type, const mp_obj_type_t **last_native_base) {
68-
uint len;
68+
mp_uint_t len;
6969
mp_obj_t *items;
7070
mp_obj_tuple_get(type->bases_tuple, &len, &items);
7171

@@ -166,7 +166,7 @@ STATIC void mp_obj_class_lookup(struct class_lookup_data *lookup, const mp_obj_
166166
return;
167167
}
168168

169-
uint len;
169+
mp_uint_t len;
170170
mp_obj_t *items;
171171
mp_obj_tuple_get(type->bases_tuple, &len, &items);
172172
if (len == 0) {
@@ -755,7 +755,7 @@ mp_obj_t mp_obj_new_type(qstr name, mp_obj_t bases_tuple, mp_obj_t locals_dict)
755755
// TODO might need to make a copy of locals_dict; at least that's how CPython does it
756756

757757
// Basic validation of base classes
758-
uint len;
758+
mp_uint_t len;
759759
mp_obj_t *items;
760760
mp_obj_tuple_get(bases_tuple, &len, &items);
761761
for (uint i = 0; i < len; i++) {
@@ -842,7 +842,7 @@ STATIC void super_load_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) {
842842
return;
843843
}
844844

845-
uint len;
845+
mp_uint_t len;
846846
mp_obj_t *items;
847847
mp_obj_tuple_get(type->bases_tuple, &len, &items);
848848
struct class_lookup_data lookup = {
@@ -901,7 +901,7 @@ bool mp_obj_is_subclass_fast(mp_const_obj_t object, mp_const_obj_t classinfo) {
901901
}
902902

903903
// get the base objects (they should be type objects)
904-
uint len;
904+
mp_uint_t len;
905905
mp_obj_t *items;
906906
mp_obj_tuple_get(self->bases_tuple, &len, &items);
907907
if (len == 0) {
@@ -921,7 +921,7 @@ bool mp_obj_is_subclass_fast(mp_const_obj_t object, mp_const_obj_t classinfo) {
921921
}
922922

923923
STATIC mp_obj_t mp_obj_is_subclass(mp_obj_t object, mp_obj_t classinfo) {
924-
uint len;
924+
mp_uint_t len;
925925
mp_obj_t *items;
926926
if (MP_OBJ_IS_TYPE(classinfo, &mp_type_type)) {
927927
len = 1;

py/runtime.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ mp_obj_t mp_call_method_n_kw_var(bool have_self, uint n_args_n_kw, const mp_obj_
593593
// optimise the case of a tuple and list
594594

595595
// get the items
596-
uint len;
596+
mp_uint_t len;
597597
mp_obj_t *items;
598598
mp_obj_get_array(pos_seq, &len, &items);
599599

@@ -689,7 +689,7 @@ mp_obj_t mp_call_method_n_kw_var(bool have_self, uint n_args_n_kw, const mp_obj_
689689

690690
// unpacked items are stored in reverse order into the array pointed to by items
691691
void mp_unpack_sequence(mp_obj_t seq_in, uint num, mp_obj_t *items) {
692-
uint seq_len;
692+
mp_uint_t seq_len;
693693
if (MP_OBJ_IS_TYPE(seq_in, &mp_type_tuple) || MP_OBJ_IS_TYPE(seq_in, &mp_type_list)) {
694694
mp_obj_t *seq_items;
695695
if (MP_OBJ_IS_TYPE(seq_in, &mp_type_tuple)) {
@@ -732,7 +732,7 @@ void mp_unpack_ex(mp_obj_t seq_in, uint num_in, mp_obj_t *items) {
732732
uint num_left = num_in & 0xff;
733733
uint num_right = (num_in >> 8) & 0xff;
734734
DEBUG_OP_printf("unpack ex %d %d\n", num_left, num_right);
735-
uint seq_len;
735+
mp_uint_t seq_len;
736736
if (MP_OBJ_IS_TYPE(seq_in, &mp_type_tuple) || MP_OBJ_IS_TYPE(seq_in, &mp_type_list)) {
737737
mp_obj_t *seq_items;
738738
if (MP_OBJ_IS_TYPE(seq_in, &mp_type_tuple)) {
@@ -773,7 +773,7 @@ void mp_unpack_ex(mp_obj_t seq_in, uint num_in, mp_obj_t *items) {
773773
while ((item = mp_iternext(iterable)) != MP_OBJ_STOP_ITERATION) {
774774
mp_obj_list_append(rest, item);
775775
}
776-
uint rest_len;
776+
mp_uint_t rest_len;
777777
mp_obj_t *rest_items;
778778
mp_obj_list_get(rest, &rest_len, &rest_items);
779779
if (rest_len < num_right) {

0 commit comments

Comments
 (0)
0