[pypy-svn] r10366 - in pypy/dist/pypy/translator: . test
pedronis at codespeak.net
pedronis at codespeak.net
Wed Apr 6 15:26:33 CEST 2005
Author: pedronis
Date: Wed Apr 6 15:26:33 2005
New Revision: 10366
Modified:
pypy/dist/pypy/translator/annrpython.py
pypy/dist/pypy/translator/test/test_annrpython.py
Log:
annotate implicit exceptions properly
Modified: pypy/dist/pypy/translator/annrpython.py
==============================================================================
--- pypy/dist/pypy/translator/annrpython.py (original)
+++ pypy/dist/pypy/translator/annrpython.py Wed Apr 6 15:26:33 2005
@@ -372,7 +372,10 @@
if isinstance(link.exitcase, (types.ClassType, type)) \
and issubclass(link.exitcase, Exception):
last_exception_object = annmodel.SomeObject()
- last_exc_value_object = annmodel.SomeObject()
+ if link.exitcase is Exception:
+ last_exc_value_object = annmodel.SomeObject()
+ else:
+ last_exc_value_object = self.bookkeeper.valueoftype(link.exitcase)
last_exc_value_vars = []
in_except_block = True
last_exception_unknown = True
Modified: pypy/dist/pypy/translator/test/test_annrpython.py
==============================================================================
--- pypy/dist/pypy/translator/test/test_annrpython.py (original)
+++ pypy/dist/pypy/translator/test/test_annrpython.py Wed Apr 6 15:26:33 2005
@@ -606,6 +606,18 @@
s = a.build_types(f, [object])
assert s.knowntype is C
+ def test_implicit_exc(self):
+ def f(l):
+ try:
+ l[0]
+ except (KeyError, IndexError),e:
+ return e
+ return None
+
+ a = RPythonAnnotator()
+ s = a.build_types(f, [list])
+ assert s.knowntype is LookupError
+
def test_overrides(self):
import sys
excs = []
More information about the Pypy-commit
mailing list