[pypy-svn] r37691 - in pypy/dist/pypy: objspace/cpy/test rpython
arigo at codespeak.net
arigo at codespeak.net
Wed Jan 31 20:59:54 CET 2007
Author: arigo
Date: Wed Jan 31 20:59:51 2007
New Revision: 37691
Modified:
pypy/dist/pypy/objspace/cpy/test/test_typedef.py
pypy/dist/pypy/rpython/rmodel.py
Log:
Test from Janzert, fix.
Modified: pypy/dist/pypy/objspace/cpy/test/test_typedef.py
==============================================================================
--- pypy/dist/pypy/objspace/cpy/test/test_typedef.py (original)
+++ pypy/dist/pypy/objspace/cpy/test/test_typedef.py Wed Jan 31 20:59:51 2007
@@ -419,3 +419,18 @@
assert type(res) is dict
assert res.keys() == ['hello']
assert type(res['hello']).__name__ == 'MyType'
+
+# ____________________________________________________________
+
+def test_interp_dict():
+ space = CPyObjSpace()
+ W_MyType.typedef = TypeDef("MyType", hello = 7)
+
+ def entry_point(x):
+ d = {W_MyType(space, x): True}
+ return space.wrap(d.keys()[0])
+
+ fn = compile(entry_point, [int],
+ annotatorpolicy = CPyAnnotatorPolicy(space))
+ res = fn(42, expected_extra_mallocs=1)
+ assert res.hello == 7
Modified: pypy/dist/pypy/rpython/rmodel.py
==============================================================================
--- pypy/dist/pypy/rpython/rmodel.py (original)
+++ pypy/dist/pypy/rpython/rmodel.py Wed Jan 31 20:59:51 2007
@@ -171,7 +171,8 @@
if (isinstance(T, lltype.Ptr) and
isinstance(T.TO, (lltype.Struct,
lltype.Array,
- lltype.ForwardReference))):
+ lltype.ForwardReference)) and
+ T.TO._gckind != 'cpy'):
return DummyValueBuilder(rtyper, T.TO)
else:
return None
@@ -450,7 +451,8 @@
def externalvsinternal(rtyper, item_repr): # -> external_item_repr, (internal_)item_repr
from pypy.rpython import rclass
- if isinstance(item_repr, rclass.AbstractInstanceRepr):
+ if (isinstance(item_repr, rclass.AbstractInstanceRepr) and
+ getattr(item_repr, 'gcflavor', 'gc') == 'gc'):
return item_repr, rclass.getinstancerepr(rtyper, None)
else:
return item_repr, item_repr
More information about the Pypy-commit
mailing list