[pypy-svn] r4931 - in pypy/branch/src-newobjectmodel/pypy: interpreter objspace/std tool/tb_server

mwh at codespeak.net mwh at codespeak.net
Fri Jun 4 22:43:39 CEST 2004


Author: mwh
Date: Fri Jun  4 22:43:39 2004
New Revision: 4931

Modified:
   pypy/branch/src-newobjectmodel/pypy/interpreter/typedef.py
   pypy/branch/src-newobjectmodel/pypy/objspace/std/typeobject.py
   pypy/branch/src-newobjectmodel/pypy/tool/tb_server/render.py
Log:
fixes to None.__class__ and instantiating subtypes.

$ python2.3 pypy/test_all.py -S interpreter
...
Ran 109 tests in 165.046s

FAILED (failures=3, errors=10)

... not too bad!



Modified: pypy/branch/src-newobjectmodel/pypy/interpreter/typedef.py
==============================================================================
--- pypy/branch/src-newobjectmodel/pypy/interpreter/typedef.py	(original)
+++ pypy/branch/src-newobjectmodel/pypy/interpreter/typedef.py	Fri Jun  4 22:43:39 2004
@@ -27,7 +27,9 @@
         self.doc = doc
 
     def descr_property_get(space, w_property, w_obj, w_ignored):
-        if w_obj == space.w_None:
+        # XXX HAAAAAAAAAAAACK (but possibly a good one)
+        if w_obj == space.w_None and not space.is_true(space.is_(w_ignored, space.type(space.w_None))):
+            print w_property, w_obj, w_ignored
             return w_property
         else:
             return space.unwrap(w_property).fget(space, w_obj)

Modified: pypy/branch/src-newobjectmodel/pypy/objspace/std/typeobject.py
==============================================================================
--- pypy/branch/src-newobjectmodel/pypy/objspace/std/typeobject.py	(original)
+++ pypy/branch/src-newobjectmodel/pypy/objspace/std/typeobject.py	Fri Jun  4 22:43:39 2004
@@ -26,10 +26,19 @@
                                 space.wrap("instance layout conflicts in "
                                                     "multiple inheritance"))
             w_self.instancetypedef = longest_mro[0]
+            nd = False
+            for w_base in bases_w:
+                if w_base.needs_new_dict:
+                    nd = True
+                    break
+            
             # provide a __dict__ for the instances if there isn't any yet
             if w_self.lookup('__dict__') is None:
                 w_self.needs_new_dict = True
                 w_self.dict_w['__dict__'] = space.wrap(attrproperty_w('w__dict__'))
+            elif nd:
+                w_self.needs_new_dict = True
+                
             
 
     def getmro(w_self):

Modified: pypy/branch/src-newobjectmodel/pypy/tool/tb_server/render.py
==============================================================================
--- pypy/branch/src-newobjectmodel/pypy/tool/tb_server/render.py	(original)
+++ pypy/branch/src-newobjectmodel/pypy/tool/tb_server/render.py	Fri Jun  4 22:43:39 2004
@@ -94,7 +94,7 @@
             for k, v in tb.tb_frame.f_locals.items():
                 if k[0] == '_':
                     continue
-                lines.append(xml.escape('%s=%s\n'%(k, repr(v)[:50])))
+                lines.append(xml.escape('%s=%s\n'%(k, repr(v)[:1000])))
         return lines
         
 



More information about the Pypy-commit mailing list