[pypy-svn] r40953 - in pypy/dist/pypy/lib: . test2

fijal at codespeak.net fijal at codespeak.net
Wed Mar 21 17:21:37 CET 2007


Author: fijal
Date: Wed Mar 21 17:21:35 2007
New Revision: 40953

Modified:
   pypy/dist/pypy/lib/test2/test_tputil.py
   pypy/dist/pypy/lib/tputil.py
Log:
Fix to tputil and a test for that


Modified: pypy/dist/pypy/lib/test2/test_tputil.py
==============================================================================
--- pypy/dist/pypy/lib/test2/test_tputil.py	(original)
+++ pypy/dist/pypy/lib/test2/test_tputil.py	Wed Mar 21 17:21:35 2007
@@ -39,3 +39,15 @@
         assert r1[0].args[0] == '__getattribute__'
         assert r1[1].opname == '__getattribute__'
         assert r1[1].args[0] == 'append' 
+
+    def test_proxy_inplace_add(self):
+        r = []
+        from tputil import make_instance_proxy 
+        def func1(invocation):
+            r.append(invocation)
+            return invocation.perform()
+
+        l2 = make_instance_proxy([], func1)
+        l = l2
+        l += [3]
+        assert l is l2

Modified: pypy/dist/pypy/lib/tputil.py
==============================================================================
--- pypy/dist/pypy/lib/tputil.py	(original)
+++ pypy/dist/pypy/lib/tputil.py	Wed Mar 21 17:21:35 2007
@@ -34,6 +34,8 @@
             if (isinstance(res, MethodType) and
                 res.im_self is self.realobj):
                 res = MethodType(res.im_func, self.proxyobj, res.im_class)
+        if res is self.realobj:
+            return self.proxyobj
         return res 
 
     def __repr__(self):



More information about the Pypy-commit mailing list