[pypy-commit] pypy set-strategies: Test and fix.

arigo noreply at buildbot.pypy.org
Mon Mar 26 19:40:28 CEST 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: set-strategies
Changeset: r54000:605b7d796555
Date: 2012-03-26 19:35 +0200
http://bitbucket.org/pypy/pypy/changeset/605b7d796555/

Log:	Test and fix.

diff --git a/pypy/objspace/std/setobject.py b/pypy/objspace/std/setobject.py
--- a/pypy/objspace/std/setobject.py
+++ b/pypy/objspace/std/setobject.py
@@ -1243,9 +1243,10 @@
         try:
             length = space.int_w(space.len(w_other))
         except OperationError, e:
-            if not e.match(space, space.w_TypeError):
-                raise
-            continue
+            if (e.match(space, space.w_TypeError) or
+                e.match(space, space.w_AttributeError)):
+                continue
+            raise
 
         if startlength == -1 or length < startlength:
             startindex = i
diff --git a/pypy/objspace/std/test/test_setobject.py b/pypy/objspace/std/test/test_setobject.py
--- a/pypy/objspace/std/test/test_setobject.py
+++ b/pypy/objspace/std/test/test_setobject.py
@@ -900,3 +900,10 @@
         raises(AttributeError, "frozenset().difference_update()")
         raises(AttributeError, "frozenset().symmetric_difference_update()")
         raises(AttributeError, "frozenset().intersection_update()")
+
+    def test_intersection_obj(self):
+        class Obj:
+            def __getitem__(self, i):
+                return [5, 3, 4][i]
+        s = set([10,3,2]).intersection(Obj())
+        assert list(s) == [3]


More information about the pypy-commit mailing list