[pypy-svn] r9213 - pypy/branch/dist-interpapp/pypy/translator/test

pedronis at codespeak.net pedronis at codespeak.net
Mon Feb 14 19:16:07 CET 2005


Author: pedronis
Date: Mon Feb 14 19:16:06 2005
New Revision: 9213

Modified:
   pypy/branch/dist-interpapp/pypy/translator/test/snippet.py
   pypy/branch/dist-interpapp/pypy/translator/test/test_annrpython.py
Log:
proof of concept test of what should happen with the bltin frame/code setup, if the unwrapping
in setfastscope is precise enough



Modified: pypy/branch/dist-interpapp/pypy/translator/test/snippet.py
==============================================================================
--- pypy/branch/dist-interpapp/pypy/translator/test/snippet.py	(original)
+++ pypy/branch/dist-interpapp/pypy/translator/test/snippet.py	Mon Feb 14 19:16:06 2005
@@ -764,3 +764,52 @@
   return (a,a1,b,b1)
 
 
+# reorg
+
+class BltinCodeReorg:
+  def __init__(self, framecls):
+    self.framecls = framecls
+
+  def call(self, x):
+     frame = self.framecls()
+     frame.set(x)
+     return frame.run()
+
+class BltinFrameReorg:
+  def __init__(self):
+      pass
+
+  def set(self,x):
+      pass
+
+  def run(self):
+      pass
+
+class FBltinFrameReorg(BltinFrameReorg):
+
+  def set(self, x):
+      self.arg = int(x)
+
+  def run(self):
+     return bltin_code_frame_f(self.arg)
+
+class GBltinFrameReorg(BltinFrameReorg):
+
+  def set(self, x):
+      self.arg = str(x)
+
+  def run(self):
+     return bltin_code_frame_g(self.arg)
+
+
+bltin_code_for_f_reorg = BltinCodeReorg(FBltinFrameReorg)
+bltin_code_for_g_reorg = BltinCodeReorg(GBltinFrameReorg)
+
+def bltin_code_frame_reorg():
+  a = bltin_code_for_f_reorg.call(0)
+  a1 = bltin_code_for_f_reorg.call(1)
+  b = bltin_code_for_g_reorg.call("a")
+  b1 = bltin_code_for_g_reorg.call("b")
+  return (a,a1,b,b1)
+
+

Modified: pypy/branch/dist-interpapp/pypy/translator/test/test_annrpython.py
==============================================================================
--- pypy/branch/dist-interpapp/pypy/translator/test/test_annrpython.py	(original)
+++ pypy/branch/dist-interpapp/pypy/translator/test/test_annrpython.py	Mon Feb 14 19:16:06 2005
@@ -494,10 +494,17 @@
         a.build_types(snippet.bltin_code_frame_confusion,[])
         f_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_f)
         g_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_g)
-        is_int = isinstance(a.binding(f_flowgraph.getreturnvar()),
+        # annotator confused by original bltin code/frame setup, we just get SomeObject here
+        assert a.binding(f_flowgraph.getreturnvar()).__class__ is annmodel.SomeObject
+        assert a.binding(g_flowgraph.getreturnvar()).__class__ is annmodel.SomeObject
+
+    def test_bltin_code_frame_reorg(self):
+        a = RPythonAnnotator()
+        a.build_types(snippet.bltin_code_frame_reorg,[])
+        f_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_f)
+        g_flowgraph = a.translator.getflowgraph(snippet.bltin_code_frame_g)
+        assert isinstance(a.binding(f_flowgraph.getreturnvar()),
                             annmodel.SomeInteger)
-        if not is_int:
-            py.test.skip("annotator confused with bltin code/frame setup")
         assert isinstance(a.binding(g_flowgraph.getreturnvar()),
                           annmodel.SomeString)
 



More information about the Pypy-commit mailing list