Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r68588:6839528d381c
Date: 2014-01-06 16:37 -0800
http://bitbucket.org/pypy/pypy/changeset/6839528d381c/

Log:    py3ify unicode's __iter__ check

diff --git a/pypy/objspace/descroperation.py b/pypy/objspace/descroperation.py
--- a/pypy/objspace/descroperation.py
+++ b/pypy/objspace/descroperation.py
@@ -57,6 +57,13 @@
     return w_iter
 tuple_iter._annspecialcase_ = 'specialize:memo'
 
+def unicode_iter(space):
+    "Utility that returns the app-level descriptor str.__iter__."
+    w_src, w_iter = space.lookup_in_type_where(space.w_unicode,
+                                               '__iter__')
+    return w_iter
+unicode_iter._annspecialcase_ = 'specialize:memo'
+
 def raiseattrerror(space, w_obj, w_name, w_descr=None):
     # space.repr always returns an encodable string.
     if w_descr is None:
diff --git a/pypy/objspace/std/objspace.py b/pypy/objspace/std/objspace.py
--- a/pypy/objspace/std/objspace.py
+++ b/pypy/objspace/std/objspace.py
@@ -487,7 +487,7 @@
             return w_obj.listview_unicode()
         if type(w_obj) is W_SetObject or type(w_obj) is W_FrozensetObject:
             return w_obj.listview_unicode()
-        if isinstance(w_obj, W_UnicodeObject) and self._uses_no_iter(w_obj):
+        if isinstance(w_obj, W_UnicodeObject) and 
self._uses_unicode_iter(w_obj):
             return w_obj.listview_unicode()
         if isinstance(w_obj, W_ListObject) and self._uses_list_iter(w_obj):
             return w_obj.getitems_unicode()
@@ -526,8 +526,9 @@
         from pypy.objspace.descroperation import tuple_iter
         return self.lookup(w_obj, '__iter__') is tuple_iter(self)
 
-    def _uses_no_iter(self, w_obj):
-        return self.lookup(w_obj, '__iter__') is None
+    def _uses_unicode_iter(self, w_obj):
+        from pypy.objspace.descroperation import unicode_iter
+        return self.lookup(w_obj, '__iter__') is unicode_iter(self)
 
     def sliceindices(self, w_slice, w_length):
         if isinstance(w_slice, W_SliceObject):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to