[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