[pypy-svn] rev 1569 - in pypy/trunk/src/pypy: objspace/flow translator translator/test
tomek at codespeak.net
tomek at codespeak.net
Sat Oct 4 13:46:45 CEST 2003
Author: tomek
Date: Sat Oct 4 13:46:44 2003
New Revision: 1569
Modified:
pypy/trunk/src/pypy/objspace/flow/objspace.py
pypy/trunk/src/pypy/translator/genpyrex.py
pypy/trunk/src/pypy/translator/test/test_pyrextrans.py
Log:
There are some small changes in genpyrex (for example now there are no def object v... statement), and I added two tests
to test_pyrextrans, which are now now executet, because the fail.
Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py
==============================================================================
--- pypy/trunk/src/pypy/objspace/flow/objspace.py (original)
+++ pypy/trunk/src/pypy/objspace/flow/objspace.py Sat Oct 4 13:46:44 2003
@@ -11,7 +11,9 @@
# ______________________________________________________________________
class FlowObjSpace(ObjSpace):
def initialize(self):
- self.w_builtins = W_Variable()
+ import __builtin__
+ self.w_builtins = W_Constant(__builtin__.__dict__)
+ self.w_KeyError = W_Constant(KeyError)
#self.make_builtins()
#self.make_sys()
Modified: pypy/trunk/src/pypy/translator/genpyrex.py
==============================================================================
--- pypy/trunk/src/pypy/translator/genpyrex.py (original)
+++ pypy/trunk/src/pypy/translator/genpyrex.py Sat Oct 4 13:46:44 2003
@@ -113,7 +113,8 @@
return "\n".join(self.lines)
def putline(self, line):
- self.lines.append(" " * self.indent + line)
+ if line:
+ self.lines.append(" " * self.indent + line)
def gen_Graph(self):
fun = self.functiongraph
@@ -125,14 +126,14 @@
# emit the header after the body
functionbodylines = self.lines
self.lines = currentlines
- inputargnames = [ self._declvar(var) for var in fun.startblock.input_args ]
+ inputargnames = [ " ".join(self._paramvardecl(var)) for var in fun.startblock.input_args ]
params = ", ".join(inputargnames)
self.putline("def %s(%s):" % (fun.functionname, params))
self.indent += 1
#self.putline("# %r" % self.annotations)
for var in self.variablelocations:
if var not in fun.startblock.input_args:
- self.putline("cdef %s" % self._declvar(var))
+ self.putline(self._vardecl(var))
self.indent -= 1
self.lines.extend(functionbodylines)
@@ -148,13 +149,21 @@
prefix = ""
return prefix + var.pseudoname
- def _declvar(self, var):
+ def _paramvardecl(self, var):
vartype = self.get_type(var)
if vartype == int:
- ctype = "int "
+ ctype = "int"
else:
- ctype = "object "
- return ctype + self.get_varname(var)
+ ctype = "object"
+
+ return (ctype, self.get_varname(var))
+
+ def _vardecl(self, var):
+ vartype, varname = self._paramvardecl(var)
+ if vartype != "object":
+ return "cdef %s %s" % (vartype, varname)
+ else:
+ return ""
def _str(self, obj, block):
if isinstance(obj, Variable):
Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py
==============================================================================
--- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original)
+++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Sat Oct 4 13:46:44 2003
@@ -85,5 +85,28 @@
poor_man_range = self.make_cfunc(self.poor_man_range)
self.assertEquals(poor_man_range(10), range(10))
+ #____________________________________________________
+
+ def attrs():
+ def b(): pass
+ b.f = 4
+ b.g = 5
+
+ return b.f + b.g
+
+ def _test_attrs(self):
+ attrs = self.make_cfunc(self.attrs)
+ self.assertEquals(attrs(), 9)
+
+ #_____________________________________________________
+
+ def builtinusage(self):
+ return pow(2,2)
+
+ def _test_builtinusage(self):
+ fun = self.make_cfunc(self.builtinusage)
+ self.assertEquals(fun(), 4)
+
+
if __name__ == '__main__':
test.main()
More information about the Pypy-commit
mailing list