[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