Author: Antonio Cuni <[email protected]>
Branch: py3k
Changeset: r57583:125172469521
Date: 2012-09-25 12:16 +0200
http://bitbucket.org/pypy/pypy/changeset/125172469521/

Log:    we need to put the chek for the empty set inside the try/finally,
        else the id() is never removed from currently_in_repr

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
@@ -1393,9 +1393,9 @@
         if set_id in currently_in_repr:
             return '%s(...)' % (s.__class__.__name__,)
         currently_in_repr[set_id] = 1
-        if not s:
-            return '%s()' % (s.__class__.__name__,)
         try:
+            if not s:
+                return '%s()' % (s.__class__.__name__,)
             listrepr = repr([x for x in s])
             if type(s) is set:
                 return '{%s}' % (listrepr[1:-1],)
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
@@ -55,7 +55,9 @@
     def test_space_newset(self):
         s = self.space.newset()
         assert self.space.str_w(self.space.repr(s)) == 'set()'
-
+        # check that the second time we don't get 'set(...)'
+        assert self.space.str_w(self.space.repr(s)) == 'set()'
+        
     def test_intersection_order(self):
         # theses tests make sure that intersection is done in the correct order
         # (smallest first)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to