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

mwh at codespeak.net mwh at codespeak.net
Mon Nov 15 16:34:51 CET 2004


Author: mwh
Date: Mon Nov 15 16:34:50 2004
New Revision: 7244

Modified:
   pypy/trunk/src/pypy/translator/genc.py
   pypy/trunk/src/pypy/translator/test/snippet.py
   pypy/trunk/src/pypy/translator/test/test_ctrans.py
Log:
dumping new-style classes

Modified: pypy/trunk/src/pypy/translator/genc.py
==============================================================================
--- pypy/trunk/src/pypy/translator/genc.py	(original)
+++ pypy/trunk/src/pypy/translator/genc.py	Mon Nov 15 16:34:50 2004
@@ -45,13 +45,19 @@
         try:
             return self.cnames[key]
         except KeyError:
-            for cls in type(obj).__mro__:
-                meth = getattr(self, 'nameof_' + cls.__name__.replace(' ', ''), None)
-                if meth:
-                    break
+            if type(obj).__module__ != '__builtin__':
+                # assume it's a user defined thingy
+                name = self.nameof_instance(obj)
             else:
-                raise TypeError, "nameof(%r)" % (obj,)
-            name = meth(obj)
+                for cls in type(obj).__mro__:
+                    meth = getattr(self,
+                                   'nameof_' + cls.__name__.replace(' ', ''),
+                                   None)
+                    if meth:
+                        break
+                else:
+                    raise TypeError, "nameof(%r)" % (obj,)
+                name = meth(obj)
             self.cnames[key] = name
             return name
 

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 Nov 15 16:34:50 2004
@@ -395,6 +395,12 @@
     return global_z.my_method()
 
 
+global_c = C()
+global_c.a = 1
+
+def global_newstyle_instance():
+    return global_c
+
 def powerset(setsize=int):
     """Powerset
 

Modified: pypy/trunk/src/pypy/translator/test/test_ctrans.py
==============================================================================
--- pypy/trunk/src/pypy/translator/test/test_ctrans.py	(original)
+++ pypy/trunk/src/pypy/translator/test/test_ctrans.py	Mon Nov 15 16:34:50 2004
@@ -103,6 +103,11 @@
         global_instance = self.build_cfunc(snippet.global_instance)
         self.assertEquals(global_instance(), 42)
 
+    def test_global_newstyle_instance(self):
+        global_newstyle_instance = self.build_cfunc(snippet.global_newstyle_instance)
+        self.assertEquals(global_newstyle_instance().a, 1)
+        
+
 class TypedTestCase(testit.IntTestCase):
 
     def getcompiled(self, func):



More information about the Pypy-commit mailing list