[pypy-svn] r75617 - pypy/branch/fast-forward/pypy/module/__builtin__

benjamin at codespeak.net benjamin at codespeak.net
Sat Jun 26 00:30:55 CEST 2010


Author: benjamin
Date: Sat Jun 26 00:30:53 2010
New Revision: 75617

Modified:
   pypy/branch/fast-forward/pypy/module/__builtin__/functional.py
Log:
some dances for old style classes

Modified: pypy/branch/fast-forward/pypy/module/__builtin__/functional.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/__builtin__/functional.py	(original)
+++ pypy/branch/fast-forward/pypy/module/__builtin__/functional.py	Sat Jun 26 00:30:53 2010
@@ -417,10 +417,16 @@
 
 def reversed(space, w_sequence):
     """Return a iterator that yields items of sequence in reverse."""
-    w_reversed_descr = space.lookup(w_sequence, "__reversed__")
-    if w_reversed_descr is None:
-        return space.wrap(W_ReversedIterator(space, w_sequence))
-    return space.get_and_call_function(w_reversed_descr, w_sequence)
+    w_reversed = None
+    if space.is_oldstyle_instance(w_sequence):
+        w_reversed = space.findattr(w_sequence, space.wrap("__reversed__"))
+    else:
+        w_reversed_descr = space.lookup(w_sequence, "__reversed__")
+        if w_reversed_descr is not None:
+            w_reversed = space.get(w_reversed_descr, w_sequence)
+    if w_reversed is not None:
+        return space.call_function(w_reversed)
+    return space.wrap(W_ReversedIterator(space, w_sequence))
 reversed.unwrap_spec = [ObjSpace, W_Root]
 
 class W_ReversedIterator(Wrappable):



More information about the Pypy-commit mailing list