[pypy-svn] r69285 - in pypy/branch/faster-raise/pypy: interpreter module/exceptions module/exceptions/test objspace/std

fijal at codespeak.net fijal at codespeak.net
Sat Nov 14 14:46:38 CET 2009


Author: fijal
Date: Sat Nov 14 14:46:37 2009
New Revision: 69285

Modified:
   pypy/branch/faster-raise/pypy/interpreter/typedef.py
   pypy/branch/faster-raise/pypy/module/exceptions/interp_exceptions.py
   pypy/branch/faster-raise/pypy/module/exceptions/test/test_exc.py
   pypy/branch/faster-raise/pypy/objspace/std/stdtypedef.py
Log:
(fijal, arigo)
Move descr_del_dict to interpreter/typedef.py
and use it from module/exceptions.


Modified: pypy/branch/faster-raise/pypy/interpreter/typedef.py
==============================================================================
--- pypy/branch/faster-raise/pypy/interpreter/typedef.py	(original)
+++ pypy/branch/faster-raise/pypy/interpreter/typedef.py	Sat Nov 14 14:46:37 2009
@@ -562,6 +562,9 @@
 def descr_set_dict(space, w_obj, w_dict):
     w_obj.setdict(space, w_dict)
 
+def descr_del_dict(space, w_obj): # blame CPython for the existence of this one
+    w_obj.setdict(space, space.newdict())
+
 def descr_get_weakref(space, w_obj):
     lifeline = w_obj.getweakref()
     if lifeline is None:

Modified: pypy/branch/faster-raise/pypy/module/exceptions/interp_exceptions.py
==============================================================================
--- pypy/branch/faster-raise/pypy/module/exceptions/interp_exceptions.py	(original)
+++ pypy/branch/faster-raise/pypy/module/exceptions/interp_exceptions.py	Sat Nov 14 14:46:37 2009
@@ -72,7 +72,8 @@
 
 from pypy.interpreter.baseobjspace import ObjSpace, Wrappable, W_Root
 from pypy.interpreter.typedef import TypeDef, interp_attrproperty_w,\
-     GetSetProperty, interp_attrproperty, descr_get_dict, descr_set_dict
+     GetSetProperty, interp_attrproperty, descr_get_dict, descr_set_dict,\
+     descr_del_dict
 from pypy.interpreter.gateway import interp2app, Arguments
 from pypy.interpreter.error import OperationError
 from pypy.rlib import rwin32
@@ -182,7 +183,7 @@
     __init__ = interp2app(W_BaseException.descr_init),
     __str__ = interp2app(W_BaseException.descr_str),
     __repr__ = interp2app(W_BaseException.descr_repr),
-    __dict__ = GetSetProperty(descr_get_dict, descr_set_dict,
+    __dict__ = GetSetProperty(descr_get_dict, descr_set_dict, descr_del_dict,
                               cls=W_BaseException),
     __getitem__ = interp2app(W_BaseException.descr_getitem),
     __reduce__ = interp2app(W_BaseException.descr_reduce),

Modified: pypy/branch/faster-raise/pypy/module/exceptions/test/test_exc.py
==============================================================================
--- pypy/branch/faster-raise/pypy/module/exceptions/test/test_exc.py	(original)
+++ pypy/branch/faster-raise/pypy/module/exceptions/test/test_exc.py	Sat Nov 14 14:46:37 2009
@@ -40,6 +40,15 @@
         x = X(x=8)
         assert x.x == 8
 
+    def test_catch_with_unpack(self):
+        from exceptions import LookupError
+
+        try:
+            raise LookupError(1, 2)
+        except LookupError, (one, two):
+            assert one == 1
+            assert two == 2
+
     def test_exc(self):
         from exceptions import Exception, BaseException
 

Modified: pypy/branch/faster-raise/pypy/objspace/std/stdtypedef.py
==============================================================================
--- pypy/branch/faster-raise/pypy/objspace/std/stdtypedef.py	(original)
+++ pypy/branch/faster-raise/pypy/objspace/std/stdtypedef.py	Sat Nov 14 14:46:37 2009
@@ -2,7 +2,7 @@
 from pypy.interpreter.error import OperationError
 from pypy.interpreter.typedef import TypeDef, GetSetProperty, Member
 from pypy.interpreter.typedef import descr_get_dict, descr_set_dict
-from pypy.interpreter.typedef import no_hash_descr
+from pypy.interpreter.typedef import no_hash_descr, descr_del_dict
 from pypy.interpreter.baseobjspace import SpaceCache
 from pypy.objspace.std.model import StdObjSpaceMultiMethod
 from pypy.objspace.std.multimethod import FailedToImplement
@@ -39,9 +39,6 @@
         a = a.base
     return True
 
-def descr_del_dict(space, w_obj): # blame CPython for the existence of this one
-    w_obj.setdict(space, space.newdict())
-
 std_dict_descr = GetSetProperty(descr_get_dict, descr_set_dict, descr_del_dict)
 std_dict_descr.name = '__dict__'
 



More information about the Pypy-commit mailing list