[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