Author: Ronan Lamy <ronan.l...@gmail.com> Branch: flowoperators Changeset: r65207:684ea56ca2c5 Date: 2013-05-02 18:08 +0100 http://bitbucket.org/pypy/pypy/changeset/684ea56ca2c5/
Log: Create exc_wrap() diff --git a/rpython/flowspace/flowcontext.py b/rpython/flowspace/flowcontext.py --- a/rpython/flowspace/flowcontext.py +++ b/rpython/flowspace/flowcontext.py @@ -506,7 +506,7 @@ self.recorder.crnt_block.closeblock(link) except FSException, e: - if e.w_type is self.space.w_ImportError: + if e.w_type == self.space.w_ImportError: msg = 'import statement always raises %s' % e raise ImportError(msg) link = Link([e.w_type, e.w_value], graph.exceptblock) @@ -661,8 +661,8 @@ self.last_exception = operr raise operr else: - raise FSException(space.w_TypeError, - space.wrap("raise: no active exception to re-raise")) + raise space.exc_wrap(TypeError( + "raise: no active exception to re-raise")) w_value = space.w_None if nbargs >= 3: diff --git a/rpython/flowspace/objspace.py b/rpython/flowspace/objspace.py --- a/rpython/flowspace/objspace.py +++ b/rpython/flowspace/objspace.py @@ -135,6 +135,11 @@ raise WrapException return Constant(obj) + def exc_wrap(self, exc): + w_value = self.wrap(exc) + w_type = self.wrap(type(exc)) + return FSException(w_type, w_value) + def int_w(self, w_obj): if isinstance(w_obj, Constant): val = w_obj.value @@ -238,7 +243,7 @@ else: # the only case left here is (inst, None), from a 'raise inst'. if not self.is_w(w_arg2, self.w_None): - raise FSException(self.w_TypeError, self.wrap( + raise self.exc_wrap(TypeError( "instance exception may not have a separate value")) w_value = w_arg1 w_type = self.type(w_value) @@ -292,7 +297,7 @@ try: v, next_unroller = it.step() except IndexError: - raise FSException(self.w_StopIteration, self.w_None) + raise self.exc_wrap(StopIteration()) else: frame.replace_in_stack(it, next_unroller) return self.wrap(v) @@ -341,8 +346,8 @@ def import_name(self, name, glob=None, loc=None, frm=None, level=-1): try: mod = __import__(name, glob, loc, frm, level) - except ImportError, e: - raise FSException(self.w_ImportError, self.wrap(str(e))) + except ImportError as e: + raise self.exc_wrap(e) return self.wrap(mod) def import_from(self, w_module, w_name): @@ -357,8 +362,8 @@ try: return self.wrap(getattr(w_module.value, w_name.value)) except AttributeError: - raise FSException(self.w_ImportError, - self.wrap("cannot import name '%s'" % w_name.value)) + raise self.exc_wrap(ImportError( + "cannot import name '%s'" % w_name.value)) def call_method(self, w_obj, methname, *arg_w): w_meth = self.getattr(w_obj, self.wrap(methname)) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit