[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