[pypy-svn] r32105 - in pypy/dist/pypy/translator: js/test transformer transformer/test
fijal at codespeak.net
fijal at codespeak.net
Sat Sep 9 11:51:51 CEST 2006
Author: fijal
Date: Sat Sep 9 11:51:32 2006
New Revision: 32105
Modified:
pypy/dist/pypy/translator/js/test/test_transformer.py
pypy/dist/pypy/translator/transformer/basictransform.py
pypy/dist/pypy/translator/transformer/debug.py
pypy/dist/pypy/translator/transformer/test/test_debug.py
Log:
Fixed dictdef dictionary.
Modified: pypy/dist/pypy/translator/js/test/test_transformer.py
==============================================================================
--- pypy/dist/pypy/translator/js/test/test_transformer.py (original)
+++ pypy/dist/pypy/translator/js/test/test_transformer.py Sat Sep 9 11:51:32 2006
@@ -131,3 +131,30 @@
lst = retval.split("|")
assert len(lst) == 1
assert lst[0] == ''
+
+def test_dict_ann():
+ def z():
+ return 3
+
+ def f(i,x):
+ b = z()
+ l = {x:b, i:z()}
+ return l
+
+ def g(i, x):
+ l = f(i, x)
+ l[x] = 3
+
+ def wrapper(a, b):
+ try:
+ traceback_handler.enter(NonConst("entrypoint"), NonConst("()"), NonConst(""), NonConst(0))
+ g(a, b)
+ except:
+ return "|".join(["%s:%s:%s:%s" % k for k in traceback_handler.tb[1:]])
+ return ""
+
+ fn = compile_function(wrapper, [int, int], debug_transform=True)
+ retval = fn()
+ lst = retval.split("|")
+ assert len(lst) == 1
+ assert lst[0] == ''
Modified: pypy/dist/pypy/translator/transformer/basictransform.py
==============================================================================
--- pypy/dist/pypy/translator/transformer/basictransform.py (original)
+++ pypy/dist/pypy/translator/transformer/basictransform.py Sat Sep 9 11:51:32 2006
@@ -43,12 +43,14 @@
retval = model.Variable()
return model.SpaceOperation(name, real_args, retval), retval
- def clear_block(self, graph, block):
- pass
-
def add_block(self, graph, block):
- assert self.annotator.annotated[block]
- self.annotator.reflowpendingblock(graph, block)
+ #assert self.annotator.annotated[block]
+ try:
+ self.annotator.reflowpendingblock(graph, block)
+ except:
+ ann = self.annotator
+ args_s = [ann.bindings[v] for v in block.inputargs]
+ ann.addpendingblock(graph, block, args_s)
def flow_method(self, _class, func_name, args):
ann = self.annotator
Modified: pypy/dist/pypy/translator/transformer/debug.py
==============================================================================
--- pypy/dist/pypy/translator/transformer/debug.py (original)
+++ pypy/dist/pypy/translator/transformer/debug.py Sat Sep 9 11:51:32 2006
@@ -51,7 +51,6 @@
graph.explicit_traceback = True
def transform_block(self, graph, block):
- self.clear_block(graph, block)
next = []
changed = False
for num, op in enumerate(block.operations):
@@ -78,6 +77,13 @@
del bk.listdefs[(graph, block, num)]
bk.listdefs[(graph, block, len(next))] = listdef
next.append(op)
+ elif op.opname == 'newdict':
+ # move listdef position key
+ bk = self.bookkeeper
+ dictdef = bk.dictdefs[(graph, block, num)]
+ del bk.dictdefs[(graph, block, num)]
+ bk.dictdefs[(graph, block, len(next))] = dictdef
+ next.append(op)
else:
next.append(op)
block.operations = next
Modified: pypy/dist/pypy/translator/transformer/test/test_debug.py
==============================================================================
--- pypy/dist/pypy/translator/transformer/test/test_debug.py (original)
+++ pypy/dist/pypy/translator/transformer/test/test_debug.py Sat Sep 9 11:51:32 2006
@@ -14,7 +14,7 @@
from pypy.translator.unsimplify import copyvar
import py
-py.test.skip("llinterp does not like my transformations")
+#py.test.skip("llinterp does not like my transformations")
def g():
pass
@@ -56,7 +56,7 @@
assert len(real_res) == 3
def test_debug_double_raising():
- py.test.skip("strange llinterp stuff")
+ py.test.skip("llinterp does not like my graph transformations")
def aaa(i):
if i:
raise TypeError()
More information about the Pypy-commit
mailing list