[pypy-svn] r69019 - in pypy/branch/gc-dump-malloc/pypy: annotation rpython/test

arigo at codespeak.net arigo at codespeak.net
Fri Nov 6 06:22:19 CET 2009


Author: arigo
Date: Fri Nov  6 06:22:19 2009
New Revision: 69019

Modified:
   pypy/branch/gc-dump-malloc/pypy/annotation/builtin.py
   pypy/branch/gc-dump-malloc/pypy/rpython/test/test_rlist.py
Log:
Merge r69018 from trunk.


Modified: pypy/branch/gc-dump-malloc/pypy/annotation/builtin.py
==============================================================================
--- pypy/branch/gc-dump-malloc/pypy/annotation/builtin.py	(original)
+++ pypy/branch/gc-dump-malloc/pypy/annotation/builtin.py	Fri Nov  6 06:22:19 2009
@@ -7,7 +7,7 @@
 from pypy.annotation.model import SomeString, SomeTuple, s_Bool, SomeBuiltin
 from pypy.annotation.model import SomeUnicodeCodePoint, SomeAddress
 from pypy.annotation.model import SomeFloat, unionof, SomeUnicodeString
-from pypy.annotation.model import SomePBC, SomeInstance, SomeDict
+from pypy.annotation.model import SomePBC, SomeInstance, SomeDict, SomeList
 from pypy.annotation.model import SomeWeakRef
 from pypy.annotation.model import SomeOOObject
 from pypy.annotation.model import annotation_to_lltype, lltype_to_annotation, ll_to_annotation
@@ -218,6 +218,8 @@
     return SomeObject()
 
 def builtin_list(s_iterable):
+    if isinstance(s_iterable, SomeList):
+        return s_iterable.listdef.offspring()
     s_iter = s_iterable.iter()
     return getbookkeeper().newlist(s_iter.next())
 

Modified: pypy/branch/gc-dump-malloc/pypy/rpython/test/test_rlist.py
==============================================================================
--- pypy/branch/gc-dump-malloc/pypy/rpython/test/test_rlist.py	(original)
+++ pypy/branch/gc-dump-malloc/pypy/rpython/test/test_rlist.py	Fri Nov  6 06:22:19 2009
@@ -1306,6 +1306,22 @@
         res = self.interpret(f, [3])
         assert res == 0
 
+    def test_make_new_list(self):
+        class A:
+            def _freeze_(self):
+                return True
+        a1 = A()
+        a2 = A()
+        def f(i):
+            lst = [a1, a1]
+            lst2 = list(lst)
+            lst2.append(a2)
+            return lst2[i] is a2
+        res = self.interpret(f, [1])
+        assert res == False
+        res = self.interpret(f, [2])
+        assert res == True
+
 
 class TestLLtype(BaseTestRlist, LLRtypeMixin):
     rlist = ll_rlist



More information about the Pypy-commit mailing list