Commit efabce0a authored by Lisandro Dalcin's avatar Lisandro Dalcin

fix except+ for cppclass methods (with Denys Duchier)

parent b23fde17
......@@ -1616,6 +1616,8 @@ class CppClassScope(Scope):
e.cname)
return scope
def add_include_file(self, filename):
self.outer_scope.add_include_file(filename)
class PropertyScope(Scope):
# Scope holding the __get__, __set__ and __del__ methods for
......
......@@ -10,6 +10,12 @@ cdef extern from "cpp_exceptions_helper.h":
cdef int raise_index_value "raise_index"(bint fire) except +ValueError
cdef int raise_index_custom "raise_index"(bint fire) except +raise_py_error
cdef cppclass Foo:
int bar_raw "bar"(bint fire) except +
int bar_value "bar"(bint fire) except +ValueError
int bar_custom "bar"(bint fire) except +raise_py_error
def test_int_raw(bint fire):
"""
>>> test_int_raw(False)
......@@ -69,3 +75,45 @@ def test_index_custom(bint fire):
TypeError: custom
"""
raise_index_custom(fire)
def test_cppclass_method_raw(bint fire):
"""
>>> test_cppclass_method_raw(False)
>>> test_cppclass_method_raw(True)
Traceback (most recent call last):
...
RuntimeError: Unknown exception
"""
foo = new Foo()
try:
foo.bar_raw(fire)
finally:
del foo
def test_cppclass_method_value(bint fire):
"""
>>> test_cppclass_method_value(False)
>>> test_cppclass_method_value(True)
Traceback (most recent call last):
...
ValueError
"""
foo = new Foo()
try:
foo.bar_value(fire)
finally:
del foo
def test_cppclass_method_custom(bint fire):
"""
>>> test_cppclass_method_custom(False)
>>> test_cppclass_method_custom(True)
Traceback (most recent call last):
...
TypeError: custom
"""
foo = new Foo()
try:
foo.bar_custom(fire)
finally:
del foo
......@@ -13,3 +13,13 @@ int raise_index(int fire) {
}
return 0;
}
class Foo {
public:
int bar(int fire) {
if (fire) {
throw 1;
}
return 0;
}
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment