[pypy-svn] r49773 - in pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__: . test

cfbolz at codespeak.net cfbolz at codespeak.net
Fri Dec 14 12:36:12 CET 2007


Author: cfbolz
Date: Fri Dec 14 12:36:11 2007
New Revision: 49773

Modified:
   pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__/interp_classobj.py
   pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__/test/test_classobj.py
Log:
allow weakrefability


Modified: pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__/interp_classobj.py
==============================================================================
--- pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__/interp_classobj.py	(original)
+++ pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__/interp_classobj.py	Fri Dec 14 12:36:11 2007
@@ -2,7 +2,7 @@
 from pypy.interpreter.error import OperationError
 from pypy.interpreter.gateway import ObjSpace, W_Root, NoneNotWrapped, applevel
 from pypy.interpreter.gateway import interp2app, ObjSpace
-from pypy.interpreter.typedef import TypeDef, GetSetProperty
+from pypy.interpreter.typedef import TypeDef, GetSetProperty, make_weakref_descr
 from pypy.interpreter.argument import Arguments
 from pypy.interpreter.baseobjspace import Wrappable
 from pypy.rlib.rarithmetic import r_uint, intmask
@@ -678,6 +678,7 @@
                          unwrap_spec=['self', ObjSpace, W_Root, W_Root]),
     __rpow__ = interp2app(W_InstanceObject.descr_rpow,
                          unwrap_spec=['self', ObjSpace, W_Root, W_Root]),
+    __weakref__ = make_weakref_descr(W_InstanceObject),
     **rawdict
 )
 

Modified: pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__/test/test_classobj.py
==============================================================================
--- pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__/test/test_classobj.py	(original)
+++ pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__/test/test_classobj.py	Fri Dec 14 12:36:11 2007
@@ -625,3 +625,16 @@
 
         D().save()
         assert l == ['A']
+
+    def test_weakref(self):
+        import weakref, gc
+        class A:
+            pass
+        a = A()
+        ref = weakref.ref(a)
+        assert ref() is a
+        a = None
+        gc.collect()
+        gc.collect()
+        gc.collect()
+        assert ref() is None



More information about the Pypy-commit mailing list