[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