[pypy-commit] pypy py3k: Fix "raise TypeError", exception type vs. exception instance.

amauryfa noreply at buildbot.pypy.org
Thu Oct 13 22:40:20 CEST 2011


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: py3k
Changeset: r48027:82ba9ff70fc2
Date: 2011-10-13 22:38 +0200
http://bitbucket.org/pypy/pypy/changeset/82ba9ff70fc2/

Log:	Fix "raise TypeError", exception type vs. exception instance.

diff --git a/pypy/interpreter/pyopcode.py b/pypy/interpreter/pyopcode.py
--- a/pypy/interpreter/pyopcode.py
+++ b/pypy/interpreter/pyopcode.py
@@ -494,7 +494,12 @@
             w_cause = self.popvalue() # XXX cause?
         if 1:
             w_value = self.popvalue()
-        operror = OperationError(space.type(w_value), w_value)
+        if space.exception_is_valid_obj_as_class_w(w_value):
+            w_type = w_value
+            w_value = space.call_function(w_type)
+        else:
+            w_type = space.type(w_value)
+        operror = OperationError(w_type, w_value)
         operror.normalize_exception(space)
         w_traceback = space.w_None # XXX with_traceback?
         if not space.full_exceptions or space.is_w(w_traceback, space.w_None):


More information about the pypy-commit mailing list