diff options
Diffstat (limited to 'sources/shiboken2/ApiExtractor/abstractmetalang.cpp')
-rw-r--r-- | sources/shiboken2/ApiExtractor/abstractmetalang.cpp | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/sources/shiboken2/ApiExtractor/abstractmetalang.cpp b/sources/shiboken2/ApiExtractor/abstractmetalang.cpp index 3bdac909c..f1f01e02c 100644 --- a/sources/shiboken2/ApiExtractor/abstractmetalang.cpp +++ b/sources/shiboken2/ApiExtractor/abstractmetalang.cpp @@ -2520,28 +2520,18 @@ AbstractMetaEnum *AbstractMetaClass::findEnum(const AbstractMetaClassList &class { Q_ASSERT(entry->isEnum()); - QString qualifiedName = entry->qualifiedCppName(); - int pos = qualifiedName.lastIndexOf(QLatin1String("::")); - - QString enumName; - QString className; - - if (pos > 0) { - enumName = qualifiedName.mid(pos + 2); - className = qualifiedName.mid(0, pos); - } else { - enumName = qualifiedName; - className = TypeDatabase::globalNamespaceClassName(entry); - } - - AbstractMetaClass *metaClass = AbstractMetaClass::findClass(classes, className); + auto scopeEntry = entry->parent(); + AbstractMetaClass *metaClass = AbstractMetaClass::findClass(classes, scopeEntry); if (!metaClass) { qCWarning(lcShiboken).noquote().nospace() << QStringLiteral("AbstractMeta::findEnum(), unknown class '%1' in '%2'") - .arg(className, entry->qualifiedCppName()); + .arg(scopeEntry->qualifiedCppName(), entry->qualifiedCppName()); return nullptr; } + QString qualifiedName = entry->qualifiedCppName(); + const int pos = qualifiedName.lastIndexOf(QLatin1String("::")); + const QString enumName = pos > 0 ? qualifiedName.mid(pos + 2) : qualifiedName; return metaClass->findEnum(enumName); } |