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

arigo at codespeak.net arigo at codespeak.net
Mon Mar 27 19:46:44 CEST 2006


Author: arigo
Date: Mon Mar 27 19:46:32 2006
New Revision: 25047

Modified:
   pypy/dist/pypy/rpython/rpbc.py
   pypy/dist/pypy/rpython/test/test_rpbc.py
Log:
Yet another case for rpbc.py: converting from multiple to
single frozen pbcs, a case I just hit in the jit.



Modified: pypy/dist/pypy/rpython/rpbc.py
==============================================================================
--- pypy/dist/pypy/rpython/rpbc.py	(original)
+++ pypy/dist/pypy/rpython/rpbc.py	Mon Mar 27 19:46:32 2006
@@ -475,6 +475,11 @@
             return inputdesc(r_pbc2, frozendesc1)
         return NotImplemented
 
+class __extend__(pairtype(AbstractMultipleUnrelatedFrozenPBCRepr,
+                          SingleFrozenPBCRepr)):
+    def convert_from_to((r_pbc1, r_pbc2), v, llops):
+        return inputconst(Void, r_pbc2.frozendesc)
+
 
 class MethodOfFrozenPBCRepr(Repr):
     """Representation selected for a PBC of method object(s) of frozen PBCs.

Modified: pypy/dist/pypy/rpython/test/test_rpbc.py
==============================================================================
--- pypy/dist/pypy/rpython/test/test_rpbc.py	(original)
+++ pypy/dist/pypy/rpython/test/test_rpbc.py	Mon Mar 27 19:46:32 2006
@@ -1150,6 +1150,21 @@
         res = interpret(f, [3], type_system=self.ts)
         assert res == 42
 
+    def test_convert_multiple_to_single(self):
+        class A:
+            def meth(self, fr):
+                return 65
+        class B(A):
+            def meth(self, fr):
+                return 66
+        fr1 = Freezing()
+        fr2 = Freezing()
+        def f():
+            return A().meth(fr1) * B().meth(fr2)
+
+        res = interpret(f, [], type_system=self.ts)
+        assert res == 65*66
+
 
 def test_call_from_list():
     # Don't test with ootype, since it doesn't support lists in a



More information about the Pypy-commit mailing list