[pypy-svn] r24675 - in pypy/dist/pypy/rpython/ootypesystem: . test
nik at codespeak.net
nik at codespeak.net
Tue Mar 21 13:55:53 CET 2006
Author: nik
Date: Tue Mar 21 13:55:51 2006
New Revision: 24675
Modified:
pypy/dist/pypy/rpython/ootypesystem/ootype.py
pypy/dist/pypy/rpython/ootypesystem/test/test_ootype.py
Log:
(nik, input from pedronis)
add dynamicType helper to ootypesystem.
Modified: pypy/dist/pypy/rpython/ootypesystem/ootype.py
==============================================================================
--- pypy/dist/pypy/rpython/ootypesystem/ootype.py (original)
+++ pypy/dist/pypy/rpython/ootypesystem/ootype.py Tue Mar 21 13:55:51 2006
@@ -427,6 +427,10 @@
assert isinstance(typeOf(inst), Instance)
return inst._classof()
+def dynamicType(inst):
+ assert isinstance(typeOf(inst), Instance)
+ return classof(inst)._INSTANCE
+
def subclassof(class1, class2):
assert isinstance(class1, _class)
assert isinstance(class2, _class)
Modified: pypy/dist/pypy/rpython/ootypesystem/test/test_ootype.py
==============================================================================
--- pypy/dist/pypy/rpython/ootypesystem/test/test_ootype.py (original)
+++ pypy/dist/pypy/rpython/ootypesystem/test/test_ootype.py Tue Mar 21 13:55:51 2006
@@ -55,6 +55,17 @@
assert classof(i2) is not classof(i)
assert classof(i2) != classof(i)
+def test_dynamictype():
+ A = Instance("A", ROOT)
+ B = Instance("B", A)
+ a = new(A)
+ b = new(B)
+ assert dynamicType(a) is A
+ assert dynamicType(b) is B
+
+ b = ooupcast(A, b)
+ assert dynamicType(b) is B
+
def test_simple_default_class():
I = Instance("test", ROOT, {"a": (Signed, 3)})
i = new(I)
More information about the Pypy-commit
mailing list