From 7067d69bccba41e2bf6c0ddad80cee603a81352a Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Sat, 10 May 2014 20:15:49 +0300
Subject: [PATCH] objnamedtuple: Support iteration.

---
 py/objnamedtuple.c          | 1 +
 py/objtuple.c               | 2 +-
 py/objtuple.h               | 1 +
 tests/basics/namedtuple1.py | 2 ++
 4 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/py/objnamedtuple.c b/py/objnamedtuple.c
index 70180b2db..0874eea85 100644
--- a/py/objnamedtuple.c
+++ b/py/objnamedtuple.c
@@ -160,6 +160,7 @@ mp_obj_t mp_obj_new_namedtuple_type(qstr name, const char *fields) {
     o->base.load_attr = namedtuple_load_attr;
     o->base.store_attr = namedtuple_store_attr;
     o->base.subscr = tuple_subscr;
+    o->base.getiter = tuple_getiter;
     o->base.bases_tuple = (mp_obj_t)&namedtuple_base_tuple;
     o->fields = fields;
     return o;
diff --git a/py/objtuple.c b/py/objtuple.c
index bb0ce6586..109e3ba67 100644
--- a/py/objtuple.c
+++ b/py/objtuple.c
@@ -174,7 +174,7 @@ mp_obj_t tuple_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
     }
 }
 
-STATIC mp_obj_t tuple_getiter(mp_obj_t o_in) {
+mp_obj_t tuple_getiter(mp_obj_t o_in) {
     return mp_obj_new_tuple_iterator(o_in, 0);
 }
 
diff --git a/py/objtuple.h b/py/objtuple.h
index 0e48c3c84..9c33ed09f 100644
--- a/py/objtuple.h
+++ b/py/objtuple.h
@@ -34,3 +34,4 @@ void tuple_print(void (*print)(void *env, const char *fmt, ...), void *env, mp_o
 mp_obj_t tuple_unary_op(int op, mp_obj_t self_in);
 mp_obj_t tuple_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs);
 mp_obj_t tuple_subscr(mp_obj_t base, mp_obj_t index, mp_obj_t value);
+mp_obj_t tuple_getiter(mp_obj_t o_in);
diff --git a/tests/basics/namedtuple1.py b/tests/basics/namedtuple1.py
index 98628cc54..05dd15bd1 100644
--- a/tests/basics/namedtuple1.py
+++ b/tests/basics/namedtuple1.py
@@ -16,6 +16,8 @@ print(bool(t))
 print(t + t)
 print(t * 3)
 
+print([f for f in t])
+
 print(isinstance(t, tuple))
 
 try:
-- 
GitLab