[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