[pypy-svn] r14672 - in pypy/dist/pypy/rpython: . test
pedronis at codespeak.net
pedronis at codespeak.net
Thu Jul 14 19:00:47 CEST 2005
Author: pedronis
Date: Thu Jul 14 19:00:29 2005
New Revision: 14672
Modified:
pypy/dist/pypy/rpython/rtuple.py
pypy/dist/pypy/rpython/test/test_rtuple.py
Log:
tuple conversions with test
Modified: pypy/dist/pypy/rpython/rtuple.py
==============================================================================
--- pypy/dist/pypy/rpython/rtuple.py (original)
+++ pypy/dist/pypy/rpython/rtuple.py Thu Jul 14 19:00:29 2005
@@ -117,7 +117,19 @@
return newtuple(hop.llops, res, vlist)
rtype_inplace_add = rtype_add
-
+ def convert_from_to((r_from, r_to), v, llops):
+ if len(r_from.items_r) == len(r_to.items_r):
+ n = len(r_from.items_r)
+ items_v = []
+ for i in range(n):
+ item_v = r_from.getitem(llops, v, i)
+ item_v = llops.convertvar(item_v,
+ r_from.items_r[i],
+ r_to.items_r[i])
+ items_v.append(item_v)
+ return newtuple(llops, r_to, items_v)
+ return NotImplemented
+
# ____________________________________________________________
#
# Irregular operations.
Modified: pypy/dist/pypy/rpython/test/test_rtuple.py
==============================================================================
--- pypy/dist/pypy/rpython/test/test_rtuple.py (original)
+++ pypy/dist/pypy/rpython/test/test_rtuple.py Thu Jul 14 19:00:29 2005
@@ -86,3 +86,21 @@
return total
res = interpret(f, [93813])
assert res == 93813
+
+def test_conv():
+ def t0():
+ return (3, 2, None)
+ def t1():
+ return (7, 2, "xy")
+ def f(i):
+ if i == 1:
+ return t1()
+ else:
+ return t0()
+
+ res = interpret(f, [1])
+ assert res.item0 == 7
+ assert isinstance(typeOf(res.item2), Ptr) and ''.join(res.item2.chars) == "xy"
+ res = interpret(f, [0])
+ assert res.item0 == 3
+ assert isinstance(typeOf(res.item2), Ptr) and not res.item2
More information about the Pypy-commit
mailing list