[pypy-svn] r14333 - in pypy/dist/pypy/rpython: . test

hpk at codespeak.net hpk at codespeak.net
Wed Jul 6 15:22:45 CEST 2005


Author: hpk
Date: Wed Jul  6 15:22:43 2005
New Revision: 14333

Modified:
   pypy/dist/pypy/rpython/rclass.py
   pypy/dist/pypy/rpython/test/test_rclass.py
Log:
(arre, hpk, thanks samuele) 

implemented issubtype (which you get from using issubclass) 


Modified: pypy/dist/pypy/rpython/rclass.py
==============================================================================
--- pypy/dist/pypy/rpython/rclass.py	(original)
+++ pypy/dist/pypy/rpython/rclass.py	Wed Jul  6 15:22:43 2005
@@ -281,6 +281,10 @@
                 raise MissingRTypeAttribute(attr)
             self.rbase.setclsfield(vcls, attr, vvalue, llops)
 
+    def rtype_issubtype(self, hop): 
+        class_repr = get_type_repr(self.rtyper)
+        v_cls1, v_cls2 = hop.inputargs(class_repr, class_repr)
+        return hop.gendirectcall(ll_issubclass, v_cls1, v_cls2)
 
 def get_type_repr(rtyper):
     return getclassrepr(rtyper, None)

Modified: pypy/dist/pypy/rpython/test/test_rclass.py
==============================================================================
--- pypy/dist/pypy/rpython/test/test_rclass.py	(original)
+++ pypy/dist/pypy/rpython/test/test_rclass.py	Wed Jul  6 15:22:43 2005
@@ -144,3 +144,27 @@
         return a.meth() + b.meth()
     res = interpret(f, [])
     assert res == 246
+
+def test_issubclass_type():
+    class A:
+        pass
+    class B(A):
+        pass
+    def f(i):
+        if i == 0: 
+            c1 = A()
+        else: 
+            c1 = B()
+        return issubclass(type(c1), B)
+    assert interpret(f, [0], view=False, viewbefore=False) == False 
+    assert interpret(f, [1], view=False, viewbefore=False) == True
+
+    def g(i):
+        if i == 0: 
+            c1 = A()
+        else: 
+            c1 = B()
+        return issubclass(type(c1), A)
+    assert interpret(g, [0], view=False, viewbefore=False) == True
+    assert interpret(g, [1], view=False, viewbefore=False) == True
+



More information about the Pypy-commit mailing list