[pypy-svn] r10362 - pypy/dist/pypy/translator

tismer at codespeak.net tismer at codespeak.net
Wed Apr 6 14:13:41 CEST 2005


Author: tismer
Date: Wed Apr  6 14:13:40 2005
New Revision: 10362

Modified:
   pypy/dist/pypy/translator/geninterplevel.py
Log:
support for property type plus small enhancements

Modified: pypy/dist/pypy/translator/geninterplevel.py
==============================================================================
--- pypy/dist/pypy/translator/geninterplevel.py	(original)
+++ pypy/dist/pypy/translator/geninterplevel.py	Wed Apr  6 14:13:40 2005
@@ -50,7 +50,10 @@
     self.initcode.append1(
         'def %s(expr):\n'
         '    dic = space.newdict([])\n'
-        '    space.exec_("", dic, dic)\n'
+        '    if "types." in expr:\n'
+        '        space.exec_("import types", dic, dic)\n'
+        '    else:\n'
+        '        space.exec_("", dic, dic)\n'
         '    return space.eval(expr, dic, dic)' % (unique, ))
     self.initcode.append1('%s = %s(%r)' % (name, unique, expr))
     return name
@@ -683,7 +686,7 @@
         # XXX small problem here:
         # XXX with space.eval, we get <W_TypeObject(method)>
         # XXX but with wrap, we get <W_TypeObject(instancemethod)>
-        type(list.append): (eval_helper, "method_descriptor", "list.append"),
+        type(list.append): (eval_helper, "method_descriptor", "type(list.append)"),
         # type 'wrapper_descriptor':
         type(type(None).__repr__): (eval_helper, "wrapper_descriptor",
                                     "type(type(None).__repr__)"),
@@ -701,6 +704,7 @@
         types.ClassType: 'space.w_classobj',
         types.MethodType: (eval_helper, "instancemethod",
             "type((lambda:42).__get__(42))"),
+        property: (eval_helper, "property", 'property'),
     }
 
     def nameof_type(self, cls):



More information about the pypy-svn mailing list