[pypy-svn] r4770 - in pypy/trunk/src/pypy/translator: . test

arigo at codespeak.net arigo at codespeak.net
Mon May 31 18:03:00 CEST 2004


Author: arigo
Date: Mon May 31 18:03:00 2004
New Revision: 4770

Modified:
   pypy/trunk/src/pypy/translator/genpyrex.py
   pypy/trunk/src/pypy/translator/test/snippet.py
   pypy/trunk/src/pypy/translator/test/test_translator.py
Log:
Generate simple methods.  This hack has name clashes problem.


Modified: pypy/trunk/src/pypy/translator/genpyrex.py
==============================================================================
--- pypy/trunk/src/pypy/translator/genpyrex.py	(original)
+++ pypy/trunk/src/pypy/translator/genpyrex.py	Mon May 31 18:03:00 2004
@@ -191,6 +191,8 @@
         self.lines = currentlines
         inputargnames = [ " ".join(self._paramvardecl(var)) for var in fun.getargs() ]
         params = ", ".join(inputargnames)
+        #returntype = self.get_type(fun.getreturnvar())
+        #returntypename = self._gettypename(returntype)
         self.putline("def %s(%s):" % (fun.name, params))
         self.indent += 1
         #self.putline("# %r" % self.annotations)
@@ -355,9 +357,9 @@
                     empty = False
                 list_methods=delay_methods.get(cls,[])
                 for py_fun in list_methods:
-                    self.putline("def %s(*args):" % (self._str(py_fun,'XXX')))
+                    self.putline("def %s(self, *args):" % py_fun.__name__)
                     self.indent += 1
-                    self.putline("return %s(*args)" %(self._str(py_fun,'XXX')))
+                    self.putline("return %s(self, *args)" % py_fun.__name__)
                     self.indent -= 1
                 if empty:
                     self.putline("pass")

Modified: pypy/trunk/src/pypy/translator/test/snippet.py
==============================================================================
--- pypy/trunk/src/pypy/translator/test/snippet.py	(original)
+++ pypy/trunk/src/pypy/translator/test/snippet.py	Mon May 31 18:03:00 2004
@@ -361,3 +361,12 @@
     while n:
         l[7] = 5
     return v
+
+class Z:
+    def my_method(self):
+        return self.my_attribute
+
+def simple_method(v):
+    z = Z()
+    z.my_attribute = v
+    return z.my_method()

Modified: pypy/trunk/src/pypy/translator/test/test_translator.py
==============================================================================
--- pypy/trunk/src/pypy/translator/test/test_translator.py	(original)
+++ pypy/trunk/src/pypy/translator/test/test_translator.py	Mon May 31 18:03:00 2004
@@ -19,5 +19,11 @@
         inheritance2 = t.compile()
         self.assertEquals(inheritance2(), ((-12, -12), (3, "world")))
 
+    def test_simple_method(self):
+        t = Translator(snippet.simple_method)
+        t.annotate([int]).simplify()
+        simple_method = t.compile()
+        self.assertEquals(simple_method(55), 55)
+
 if __name__ == '__main__':
     testit.main()



More information about the Pypy-commit mailing list