aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/ApiExtractor/tests
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2019-02-28 10:42:30 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2019-02-28 15:48:07 +0000
commit0aa52375886138693caf395238fcd3baf3489dec (patch)
treefc24d91372e071e41db65831f919b505cb898083 /sources/shiboken2/ApiExtractor/tests
parente9c89837f91bf608371a7e39903ecd4038f769c1 (diff)
shiboken: Fix exception handling when specified in base class
Class-level exception specifications on a base class were not working so far. This requires a larger refactoring, since the base classes are not yet known at the point where class functions were traversed (AbstractMetaBuilder::setupInheritance() is called at a later stage). To fix this, store the actual type system modification in the AbstractMetaFunction and move the logic determining whether to generate exception handling into AbstractMetaFunction::generateExceptionHandling(). In this function, recurse down the base classes if the function does not have a modification set. This is a preparation for giving the allow-thread attribute, which can currently only be used at a function level, a similar handling. Task-number: PYSIDE-62 Change-Id: I28597559511d330cf860c6f6e21ffea229bfab3e Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/shiboken2/ApiExtractor/tests')
-rw-r--r--sources/shiboken2/ApiExtractor/tests/testmodifyfunction.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/sources/shiboken2/ApiExtractor/tests/testmodifyfunction.cpp b/sources/shiboken2/ApiExtractor/tests/testmodifyfunction.cpp
index 5016f38c5..88e0c500d 100644
--- a/sources/shiboken2/ApiExtractor/tests/testmodifyfunction.cpp
+++ b/sources/shiboken2/ApiExtractor/tests/testmodifyfunction.cpp
@@ -394,6 +394,17 @@ struct A : public Base {
</typesystem>)XML")
<< true << false << true;
+ // Activate on base class level
+ QTest::newRow("baseclass-on")
+ << cppCode
+ << QByteArray(R"XML(
+<typesystem package='Foo'>
+ <primitive-type name='int'/>
+ <object-type name='Base' exception-handling='auto-on'/>
+ <object-type name='A'/>
+</typesystem>)XML")
+ << true << false << true;
+
// Override value on class level
QTest::newRow("override-class-on")
<< cppCode