Author: Hakan Ardo <ha...@debian.org>
Branch: jit-usable_retrace_3
Changeset: r58718:d19999a6e537
Date: 2012-10-24 16:10 +0200
http://bitbucket.org/pypy/pypy/changeset/d19999a6e537/

Log:    class missmatch

diff --git a/pypy/jit/metainterp/test/test_virtualstate.py 
b/pypy/jit/metainterp/test/test_virtualstate.py
--- a/pypy/jit/metainterp/test/test_virtualstate.py
+++ b/pypy/jit/metainterp/test/test_virtualstate.py
@@ -1178,11 +1178,14 @@
     node_class = ConstInt(42)
     node1, node2 = BoxPtr(), BoxPtr()
     descr1, descr2 = FakeDescr(), FakeDescr()
+    subnode_class = ConstInt(7)
+    subnode1 = BoxPtr()
 
     def __init__(self):
         self.values = {}
         self.values[self.node1] = VirtualValue(self.cpu, self.node_class, 
self.node1)
         self.values[self.node2] = VirtualValue(self.cpu, self.node_class, 
self.node2)
+        self.values[self.subnode1] = VirtualValue(self.cpu, 
self.subnode_class, self.subnode1)
         for n in dir(self):
             box = getattr(self, n)
             if isinstance(box, AbstractValue) and box not in self.values:
@@ -1236,8 +1239,12 @@
         modifier = VirtualStateAdder(self.optimizer)
         vstate1 = modifier.get_virtual_state(inputargs)
         vstate2 = modifier.get_virtual_state(jumpargs)
-        vstate = vstate1.make_guarded_generalization_of(vstate2, jumpargs, 
self.optimizer) 
-        assert vstate.state == expected
+        if isinstance(expected, type) and issubclass(expected, Exception):
+            with raises(expected):
+                vstate = vstate1.make_guarded_generalization_of(vstate2, 
jumpargs, self.optimizer) 
+        else:
+            vstate = vstate1.make_guarded_generalization_of(vstate2, jumpargs, 
self.optimizer) 
+            assert vstate.state == expected
 
     def setfield(self, node, descr, box):
         self.optimizer.getvalue(node).setfield(descr, 
self.optimizer.getvalue(box))
@@ -1275,6 +1282,9 @@
         self.setfield(o.node2, o.descr2, o.const_int2)
         self.combine([o.node1], [o.node2], [Virtual(o.node_class, {o.descr2: 
Unknown})])
 
+    def test_virtual_class_missmatch(self):
+        o = self.optimizer
+        self.combine([o.node1], [o.subnode1], InvalidLoop)
 
 
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to