Author: Philip Jenvey <pjen...@underboss.org>
Branch: stdlib-2.7.12
Changeset: r87640:67896f62ff21
Date: 2016-10-08 16:26 -0700
http://bitbucket.org/pypy/pypy/changeset/67896f62ff21/

Log:    include "__del__" in old style classes' error message

diff --git a/pypy/module/__builtin__/interp_classobj.py 
b/pypy/module/__builtin__/interp_classobj.py
--- a/pypy/module/__builtin__/interp_classobj.py
+++ b/pypy/module/__builtin__/interp_classobj.py
@@ -1,5 +1,6 @@
 import new
 from pypy.interpreter.error import OperationError, oefmt
+from pypy.interpreter.executioncontext import report_error
 from pypy.interpreter.gateway import interp2app, unwrap_spec
 from pypy.interpreter.typedef import TypeDef, make_weakref_descr
 from pypy.interpreter.baseobjspace import W_Root
@@ -656,9 +657,13 @@
         if w_func is None:
             w_func = self.getattr_from_class(space, '__del__')
         if w_func is not None:
-            if self.space.user_del_action.gc_disabled(self):
+            if space.user_del_action.gc_disabled(self):
                 return
-            space.call_function(w_func)
+            try:
+                space.call_function(w_func)
+            except Exception as e:
+                # report this came from __del__ vs a generic finalizer
+                report_error(space, e, "method __del__ of ", self)
 
     def descr_exit(self, space, w_type, w_value, w_tb):
         w_func = self.getattr(space, '__exit__', False)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to