diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-10-07 13:42:33 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-10-08 11:39:47 +0200 |
commit | 2ed45ce8991408de91d7e02a2b80a09a2d9e5083 (patch) | |
tree | b3b6768527829289933d5df5ecda10a733c00d18 /sources/shiboken2/generator/shiboken2 | |
parent | 4761ea81d1789d153ae986be6f749853f5a68332 (diff) |
shiboken2: Recurse to generated base class for base
Skip base classes whose generation was disabled by reject or
generate='no'. This can happen for typedef entries.
Task-number: PYSIDE-1202
Change-Id: Ie6fac2408a6aa7b3303b4f06e744a2d2405e2a30
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/shiboken2/generator/shiboken2')
-rw-r--r-- | sources/shiboken2/generator/shiboken2/cppgenerator.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp index 0ffc7908d..c1f1b21db 100644 --- a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp @@ -5262,9 +5262,16 @@ void CppGenerator::writeClassRegister(QTextStream &s, s << "0,\n"; } - // 6:baseType - const auto base = metaClass->isNamespace() + // 6:baseType: Find a type that is not disabled. + auto base = metaClass->isNamespace() ? metaClass->extendedNamespace() : metaClass->baseClass(); + if (!metaClass->isNamespace()) { + for (; base != nullptr; base = base->baseClass()) { + const auto ct = base->typeEntry()->codeGeneration(); + if (ct == TypeEntry::GenerateCode || ct == TypeEntry::GenerateForSubclass) + break; + } + } if (base) { s << INDENT << "reinterpret_cast<SbkObjectType *>(" << cpythonTypeNameExt(base->typeEntry()) << "),\n"; |