[pypy-svn] r64928 - in pypy/branch/pyjitpl5/pypy/rpython/ootypesystem: . test
antocuni at codespeak.net
antocuni at codespeak.net
Fri May 1 11:10:32 CEST 2009
Author: antocuni
Date: Fri May 1 11:10:25 2009
New Revision: 64928
Modified:
pypy/branch/pyjitpl5/pypy/rpython/ootypesystem/rootype.py
pypy/branch/pyjitpl5/pypy/rpython/ootypesystem/test/test_oortype.py
Log:
implement '==' and '!=' for ootype classes
Modified: pypy/branch/pyjitpl5/pypy/rpython/ootypesystem/rootype.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/rpython/ootypesystem/rootype.py (original)
+++ pypy/branch/pyjitpl5/pypy/rpython/ootypesystem/rootype.py Fri May 1 11:10:25 2009
@@ -113,6 +113,19 @@
v = rpair.rtype_eq(hop)
return hop.genop("bool_not", [v], resulttype=ootype.Bool)
+
+class __extend__(pairtype(OOClassRepr, OOClassRepr)):
+ def rtype_is_((r_obj1, r_obj2), hop):
+ vlist = hop.inputargs(r_obj1, r_obj2)
+ return hop.genop('oois', vlist, resulttype=ootype.Bool)
+
+ rtype_eq = rtype_is_
+
+ def rtype_ne(rpair, hop):
+ v = rpair.rtype_eq(hop)
+ return hop.genop("bool_not", [v], resulttype=ootype.Bool)
+
+
class OOBoundMethRepr(Repr):
def __init__(self, ootype, name):
self.lowleveltype = ootype
Modified: pypy/branch/pyjitpl5/pypy/rpython/ootypesystem/test/test_oortype.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/rpython/ootypesystem/test/test_oortype.py (original)
+++ pypy/branch/pyjitpl5/pypy/rpython/ootypesystem/test/test_oortype.py Fri May 1 11:10:25 2009
@@ -403,3 +403,21 @@
g = gengraph(f)
rettype = g.getreturnvar().concretetype
assert rettype._hints['immutable']
+
+
+def test_compare_classes():
+ A = ootype.Instance("A", ootype.ROOT)
+ B = ootype.Instance("B", ootype.ROOT)
+
+ cls1 = ootype.runtimeClass(A)
+ def fn(n):
+ if n:
+ cls2 = ootype.runtimeClass(A)
+ else:
+ cls2 = ootype.runtimeClass(B)
+
+ assert (cls1 == cls2) == (not (cls1 != cls2))
+ return cls1 == cls2
+
+ res = interpret(fn, [1], type_system='ootype')
+ assert res
More information about the Pypy-commit
mailing list