From dda4d53d8b9bdc2a18e8f3f295bd9c887c8742e0 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 1 Dec 2017 13:47:31 +0100 Subject: shiboken: Do not generate wrapper methods for final C++ methods This will result in a compilation error (overriding final method). Final methods appear in Qt3DInput::QMouse/QKeyboardDevice. Task-number: PYSIDE-487 Change-Id: I6eb300c91327c587b6bfe530fdafb519817171c4 Reviewed-by: Christian Tismer --- sources/shiboken2/generator/shiboken2/cppgenerator.cpp | 8 +++++--- sources/shiboken2/generator/shiboken2/headergenerator.cpp | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'sources/shiboken2/generator') diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp index cb650dde3..35d896333 100644 --- a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp @@ -344,11 +344,13 @@ void CppGenerator::generateClass(QTextStream &s, GeneratorContext &classContext) if ((func->isPrivate() && !visibilityModifiedToPrivate(func)) || (func->isModifiedRemoved() && !func->isAbstract())) continue; - if (func->functionType() == AbstractMetaFunction::ConstructorFunction && !func->isUserAdded()) + if (func->functionType() == AbstractMetaFunction::ConstructorFunction && !func->isUserAdded()) { writeConstructorNative(s, func); - else if ((!avoidProtectedHack() || !metaClass->hasPrivateDestructor()) - && (func->isVirtual() || func->isAbstract())) + } else if ((!avoidProtectedHack() || !metaClass->hasPrivateDestructor()) + && ((func->isVirtual() || func->isAbstract()) + && (func->attributes() & AbstractMetaAttributes::FinalCppMethod) == 0)) { writeVirtualMethodNative(s, func); + } } if (!avoidProtectedHack() || !metaClass->hasPrivateDestructor()) { diff --git a/sources/shiboken2/generator/shiboken2/headergenerator.cpp b/sources/shiboken2/generator/shiboken2/headergenerator.cpp index a41139381..e9bdacaf6 100644 --- a/sources/shiboken2/generator/shiboken2/headergenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/headergenerator.cpp @@ -143,7 +143,8 @@ void HeaderGenerator::generateClass(QTextStream &s, GeneratorContext &classConte for (AbstractMetaFunction *func : funcs) { if (func->isVirtual()) hasVirtualFunction = true; - writeFunction(s, func); + if ((func->attributes() & AbstractMetaAttributes::FinalCppMethod) == 0) + writeFunction(s, func); } if (avoidProtectedHack() && metaClass->hasProtectedFields()) { -- cgit v1.2.3