[pypy-svn] r19997 - pypy/branch/somepbc-refactoring/pypy/rpython/test
mwh at codespeak.net
mwh at codespeak.net
Fri Nov 18 11:07:50 CET 2005
Author: mwh
Date: Fri Nov 18 11:07:49 2005
New Revision: 19997
Modified:
pypy/branch/somepbc-refactoring/pypy/rpython/test/test_llann.py
Log:
i rewrote this test on the train too, and i prefer my rewrite :)
Modified: pypy/branch/somepbc-refactoring/pypy/rpython/test/test_llann.py
==============================================================================
--- pypy/branch/somepbc-refactoring/pypy/rpython/test/test_llann.py (original)
+++ pypy/branch/somepbc-refactoring/pypy/rpython/test/test_llann.py Fri Nov 18 11:07:49 2005
@@ -162,31 +162,38 @@
a = self.RPythonAnnotator()
s = annotate_lowlevel_helper(a, llf, [])
assert s == annmodel.SomeFloat()
- vTs = []
+
+ seen = {}
ngraphs = len(a.translator.graphs)
+
for call in annotated_calls(a):
if derived(call, "ll_"):
- func = call.args[0].value
- T = call.args[1].value
- inputcells = [a.binding(v) for v in call.args[1:]]
- g = a.bookkeeper.getdesc(func).specialize(inputcells)
+
+ func, T = [x.value for x in call.args[0:2]]
+ if (func, T) in seen:
+ continue
+ seen[func, T] = True
+
+ desc = a.bookkeeper.getdesc(func)
+ g = desc.specialize([a.binding(x) for x in call.args[1:]])
+
args = g.getargs()
rv = g.getreturnvar()
- if len(args) == 2:
- vT, vn = args
- vTs.append(vT)
- assert a.binding(vT) == a.bookkeeper.immutablevalue(T)
- assert a.binding(vn).knowntype == int
- assert a.binding(rv).ll_ptrtype.TO == T
- else:
+ if func is ll_get:
vT, vp, vi = args
- vTs.append(vT)
assert a.binding(vT) == a.bookkeeper.immutablevalue(T)
assert a.binding(vi).knowntype == int
assert a.binding(vp).ll_ptrtype.TO == T
assert a.binding(rv) == annmodel.lltype_to_annotation(T.OF)
- assert len(a.translator.graphs) == ngraphs
- return a, vTs
+ elif func is ll_make:
+ vT, vn = args
+ assert a.binding(vT) == a.bookkeeper.immutablevalue(T)
+ assert a.binding(vn).knowntype == int
+ assert a.binding(rv).ll_ptrtype.TO == T
+ else:
+ assert False, func
+
+ assert len(seen) == 4
def test_ll_calling_ll2(self):
A = GcArray(Float)
@@ -213,42 +220,48 @@
s = annotate_lowlevel_helper(a, llf, [])
assert s == annmodel.SomeFloat()
+ seen = {}
+
def q(v):
s = a.binding(v)
if s.is_constant():
return s.const
else:
return s.ll_ptrtype
-
- vTs = []
- ngraphs = len(a.translator.graphs)
+
for call in annotated_calls(a):
- if derived(call, "ll_") or derived(call, "makelen4"):
- func = call.args[0].value
- T = q(call.args[1])
- inputcells = [a.binding(v) for v in call.args[1:]]
- g = a.bookkeeper.getdesc(func).specialize(inputcells)
+ if derived(call, "ll_") or derived(call, "makelen4"):
+
+ func, T = [q(x) for x in call.args[0:2]]
+ if (func, T) in seen:
+ continue
+ seen[func, T] = True
+
+ desc = a.bookkeeper.getdesc(func)
+ g = desc.specialize([a.binding(x) for x in call.args[1:]])
+
args = g.getargs()
rv = g.getreturnvar()
- if isinstance(T, ContainerType):
- if len(args) == 2:
- vT, vn = args
- vTs.append(vT)
- assert a.binding(vT) == a.bookkeeper.immutablevalue(T)
- assert a.binding(vn).knowntype == int
- assert a.binding(rv).ll_ptrtype.TO == T
- else:
- vT, = args
- vTs.append(vT)
- assert a.binding(vT) == a.bookkeeper.immutablevalue(T)
- assert a.binding(rv).ll_ptrtype.TO == T
- else:
+
+ if func is ll_make:
+ vT, vn = args
+ assert a.binding(vT) == a.bookkeeper.immutablevalue(T)
+ assert a.binding(vn).knowntype == int
+ assert a.binding(rv).ll_ptrtype.TO == T
+ elif func is makelen4:
+ vT, = args
+ assert a.binding(vT) == a.bookkeeper.immutablevalue(T)
+ assert a.binding(rv).ll_ptrtype.TO == T
+ elif func is ll_get:
vp, vi = args
assert a.binding(vi).knowntype == int
assert a.binding(vp).ll_ptrtype == T
- assert a.binding(rv) == annmodel.lltype_to_annotation(T.TO.OF)
- assert len(a.translator.graphs) == ngraphs
- return a, vTs
+ assert a.binding(rv) == annmodel.lltype_to_annotation(
+ T.TO.OF)
+ else:
+ assert False, func
+
+ assert len(seen) == 5
def test_getRuntimeTypeInfo(self):
S = GcStruct('s', ('x', Signed))
More information about the Pypy-commit
mailing list