Author: Jeremy Thurgood <fir...@gmail.com> Branch: enumerate-rstr Changeset: r61557:5671340d830e Date: 2013-02-21 20:36 +0200 http://bitbucket.org/pypy/pypy/changeset/5671340d830e/
Log: Proper tests and some oothingies. diff --git a/rpython/rtyper/ootypesystem/rstr.py b/rpython/rtyper/ootypesystem/rstr.py --- a/rpython/rtyper/ootypesystem/rstr.py +++ b/rpython/rtyper/ootypesystem/rstr.py @@ -428,14 +428,17 @@ class StringIteratorRepr(AbstractStringIteratorRepr): + external_item_repr = char_repr lowleveltype = ootype.Record({'string': string_repr.lowleveltype, 'index': ootype.Signed}) def __init__(self): self.ll_striter = ll_striter self.ll_strnext = ll_strnext + self.ll_getnextindex = ll_getnextindex class UnicodeIteratorRepr(AbstractStringIteratorRepr): + external_item_repr = unichar_repr lowleveltype = ootype.Record({'string': unicode_repr.lowleveltype, 'index': ootype.Signed}) @@ -463,6 +466,9 @@ iter.index = index + 1 return string.ll_stritem_nonneg(index) +def ll_getnextindex(iter): + return iter.index + StringRepr.string_iterator_repr = StringIteratorRepr() UnicodeRepr.string_iterator_repr = UnicodeIteratorRepr() diff --git a/rpython/rtyper/test/test_rstr.py b/rpython/rtyper/test/test_rstr.py --- a/rpython/rtyper/test/test_rstr.py +++ b/rpython/rtyper/test/test_rstr.py @@ -1035,6 +1035,17 @@ got = self.interpret(f, [7]) assert self.ll_to_string(got) == 'None' + def test_enumerate(self): + const = self.const + def fn(n): + s = const('abcde') + for i, x in enumerate(s): + if i == n: + return x + return 'x' + res = self.interpret(fn, [2]) + assert res == 'c' + def FIXME_test_str_to_pystringobj(): def f(n): _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit