From 2bd28c838503ec76cef21c4131532f5aa5ef7c96 Mon Sep 17 00:00:00 2001 From: "A. R. Shajii" Date: Fri, 24 Mar 2023 11:20:22 -0400 Subject: [PATCH] Fix pyext iterators --- stdlib/internal/python.codon | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/stdlib/internal/python.codon b/stdlib/internal/python.codon index a1fef10c..0f68a544 100644 --- a/stdlib/internal/python.codon +++ b/stdlib/internal/python.codon @@ -1853,12 +1853,19 @@ class _PyWrap: def _iter(obj: cobj) -> cobj: T # need separate fn for each instantiation + p = Ptr[PyObject](obj) + o = p[0] + p[0] = PyObject(o.refcnt + 1, o.pytype) return obj def _iternext(self: cobj) -> cobj: pt = _PyWrap.IterWrap[T].__from_py__(self) + if pt._gen == cobj(): + return cobj() + gt = type(T().__iter__())(pt._gen) if gt.done(): + pt._gen = cobj() return cobj() else: return gt.next().__to_py__()