diff --git a/py/objarray.c b/py/objarray.c index ea8654b456..c91c553e3c 100644 --- a/py/objarray.c +++ b/py/objarray.c @@ -219,6 +219,7 @@ STATIC mp_obj_t array_it_iternext(mp_obj_t self_in) { STATIC const mp_obj_type_t array_it_type = { { &mp_type_type }, .name = MP_QSTR_iterator, + .getiter = mp_identity, .iternext = array_it_iternext, }; diff --git a/py/objdict.c b/py/objdict.c index a9dbb76c44..01c7294a46 100644 --- a/py/objdict.c +++ b/py/objdict.c @@ -107,6 +107,7 @@ mp_obj_t dict_it_iternext(mp_obj_t self_in) { STATIC const mp_obj_type_t mp_type_dict_it = { { &mp_type_type }, .name = MP_QSTR_iterator, + .getiter = mp_identity, .iternext = dict_it_iternext, }; @@ -336,6 +337,7 @@ STATIC mp_obj_t dict_view_it_iternext(mp_obj_t self_in) { STATIC const mp_obj_type_t dict_view_it_type = { { &mp_type_type }, .name = MP_QSTR_iterator, + .getiter = mp_identity, .iternext = dict_view_it_iternext, }; diff --git a/py/objgetitemiter.c b/py/objgetitemiter.c index 09235640a8..da0e4760c8 100644 --- a/py/objgetitemiter.c +++ b/py/objgetitemiter.c @@ -38,6 +38,7 @@ STATIC mp_obj_t it_iternext(mp_obj_t self_in) { STATIC const mp_obj_type_t it_type = { { &mp_type_type }, .name = MP_QSTR_iterator, + .getiter = mp_identity, .iternext = it_iternext }; diff --git a/py/objlist.c b/py/objlist.c index 1030a862a2..244d4a5960 100644 --- a/py/objlist.c +++ b/py/objlist.c @@ -408,6 +408,7 @@ mp_obj_t list_it_iternext(mp_obj_t self_in) { STATIC const mp_obj_type_t mp_type_list_it = { { &mp_type_type }, .name = MP_QSTR_iterator, + .getiter = mp_identity, .iternext = list_it_iternext, }; diff --git a/py/objrange.c b/py/objrange.c index c527dfa89e..64d92457b7 100644 --- a/py/objrange.c +++ b/py/objrange.c @@ -63,6 +63,7 @@ STATIC mp_obj_t range_it_iternext(mp_obj_t o_in) { STATIC const mp_obj_type_t range_it_type = { { &mp_type_type }, .name = MP_QSTR_iterator, + .getiter = mp_identity, .iternext = range_it_iternext, }; diff --git a/py/objset.c b/py/objset.c index 2cabf6c509..439c6e96e6 100644 --- a/py/objset.c +++ b/py/objset.c @@ -72,6 +72,7 @@ STATIC mp_obj_t set_make_new(mp_obj_t type_in, uint n_args, uint n_kw, const mp_ const mp_obj_type_t mp_type_set_it = { { &mp_type_type }, .name = MP_QSTR_iterator, + .getiter = mp_identity, .iternext = set_it_iternext, }; diff --git a/py/objstr.c b/py/objstr.c index 2dd7015c58..751f93afd7 100644 --- a/py/objstr.c +++ b/py/objstr.c @@ -885,6 +885,7 @@ STATIC mp_obj_t str_it_iternext(mp_obj_t self_in) { STATIC const mp_obj_type_t mp_type_str_it = { { &mp_type_type }, .name = MP_QSTR_iterator, + .getiter = mp_identity, .iternext = str_it_iternext, }; @@ -903,6 +904,7 @@ STATIC mp_obj_t bytes_it_iternext(mp_obj_t self_in) { STATIC const mp_obj_type_t mp_type_bytes_it = { { &mp_type_type }, .name = MP_QSTR_iterator, + .getiter = mp_identity, .iternext = bytes_it_iternext, }; diff --git a/py/objtuple.c b/py/objtuple.c index 7f14509029..d6a5bb3d06 100644 --- a/py/objtuple.c +++ b/py/objtuple.c @@ -251,6 +251,7 @@ STATIC mp_obj_t tuple_it_iternext(mp_obj_t self_in) { STATIC const mp_obj_type_t mp_type_tuple_it = { { &mp_type_type }, .name = MP_QSTR_iterator, + .getiter = mp_identity, .iternext = tuple_it_iternext, }; diff --git a/tests/basics/iter-of-iter.py b/tests/basics/iter-of-iter.py new file mode 100644 index 0000000000..93368612b8 --- /dev/null +++ b/tests/basics/iter-of-iter.py @@ -0,0 +1,8 @@ +i = iter(iter((1, 2, 3))) +print(list(i)) +i = iter(iter([1, 2, 3])) +print(list(i)) +i = iter(iter({1:2, 3:4, 5:6})) +print(list(i)) +i = iter(iter({1, 2, 3})) +print(list(i))