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

cfbolz at codespeak.net cfbolz at codespeak.net
Mon Aug 8 17:08:45 CEST 2005


Author: cfbolz
Date: Mon Aug  8 17:08:44 2005
New Revision: 15775

Modified:
   pypy/dist/pypy/rpython/memory/lltypesimulation.py
   pypy/dist/pypy/rpython/memory/test/test_lltypesimulation.py
Log:
make sure that a real bools are returned.


Modified: pypy/dist/pypy/rpython/memory/lltypesimulation.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/lltypesimulation.py	(original)
+++ pypy/dist/pypy/rpython/memory/lltypesimulation.py	Mon Aug  8 17:08:44 2005
@@ -88,6 +88,8 @@
     """XXX A nice docstring here"""
     if isinstance(T, (lltype.Struct, lltype.Array)):
         return simulatorptr(lltype.Ptr(T), address)
+    elif T == lltype.Bool:
+        return bool(address._load(primitive_to_fmt[T])[0])
     elif isinstance(T, lltype.Primitive):
         return address._load(primitive_to_fmt[T])[0]
     elif isinstance(T, lltype.Ptr):
@@ -129,6 +131,8 @@
                 base = self._layout[field_name]
                 if isinstance(T, lltype.Primitive):
                     res = (self._address + offset)._load(primitive_to_fmt[T])[0]
+                    if T == lltype.Bool:
+                        res = bool(res)
                     return res
                 elif isinstance(T, lltype.Ptr):
                     res = _expose(T.TO, (self._address + offset).address[0])

Modified: pypy/dist/pypy/rpython/memory/test/test_lltypesimulation.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/test/test_lltypesimulation.py	(original)
+++ pypy/dist/pypy/rpython/memory/test/test_lltypesimulation.py	Mon Aug  8 17:08:44 2005
@@ -18,7 +18,8 @@
     assert s0.a == 42
     assert s0.b == 43
     assert s0.c == 'x'
-    assert s0.d == 1
+    assert s0.d == True
+    assert lltype.typeOf(s0.d) == lltype.Bool
     s0.a = 1
     s0.b = s0.a
     assert s0.a == 1
@@ -37,6 +38,16 @@
     x[2].v = 3
     assert [x[z].v for z in range(3)] == [1, 2, 3]
 
+def test_bool_array():
+    Ar = lltype.GcArray(lltype.Bool)
+    x = malloc(Ar, 3)
+    assert len(x) == 3
+    assert lltype.typeOf(x[0]) == lltype.Bool
+    x[0] = True
+    x[1] = False
+    x[2] = False
+    assert [x[z] for z in range(3)] == [True, False, False]
+    
 
 def define_list(T):
     List_typ = lltype.GcStruct(



More information about the Pypy-commit mailing list