mirror of
https://github.com/micropython/micropython.git
synced 2025-08-08 11:42:04 +02:00
py: Add MP_OBJ_STOP_ITERATION and make good use of it.
Also make consistent use of MP_OBJ_NOT_SUPPORTED and MP_OBJ_NULL. This helps a lot in debugging and understanding of function API.
This commit is contained in:
@@ -30,16 +30,16 @@ STATIC mp_obj_t zip_iternext(mp_obj_t self_in) {
|
||||
mp_obj_zip_t *self = self_in;
|
||||
mp_obj_t *items;
|
||||
if (self->n_iters == 0) {
|
||||
return MP_OBJ_NULL;
|
||||
return MP_OBJ_STOP_ITERATION;
|
||||
}
|
||||
mp_obj_t o = mp_obj_new_tuple(self->n_iters, NULL);
|
||||
mp_obj_tuple_get(o, NULL, &items);
|
||||
|
||||
for (int i = 0; i < self->n_iters; i++) {
|
||||
mp_obj_t next = mp_iternext(self->iters[i]);
|
||||
if (next == MP_OBJ_NULL) {
|
||||
if (next == MP_OBJ_STOP_ITERATION) {
|
||||
mp_obj_tuple_del(o);
|
||||
return MP_OBJ_NULL;
|
||||
return MP_OBJ_STOP_ITERATION;
|
||||
}
|
||||
items[i] = next;
|
||||
}
|
||||
|
Reference in New Issue
Block a user