diff options
Diffstat (limited to 'abstractmetabuilder.cpp')
-rw-r--r-- | abstractmetabuilder.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/abstractmetabuilder.cpp b/abstractmetabuilder.cpp index e650b5f06..197acbd4e 100644 --- a/abstractmetabuilder.cpp +++ b/abstractmetabuilder.cpp @@ -895,7 +895,21 @@ AbstractMetaEnum* AbstractMetaBuilder::traverseEnum(EnumModelItem enumItem, Abst QString qualifiedName = enumItem->qualifiedName().join("::"); - TypeEntry* typeEntry = TypeDatabase::instance()->findType(qualifiedName); + TypeEntry* typeEntry = 0; + if (!enumItem->isAnonymous()) { + typeEntry = TypeDatabase::instance()->findType(qualifiedName); + } else { + QStringList tmpQualifiedName = enumItem->qualifiedName(); + foreach (const EnumeratorModelItem& enumValue, enumItem->enumerators()) { + tmpQualifiedName.removeLast(); + tmpQualifiedName << enumValue->name(); + qualifiedName = tmpQualifiedName.join("::"); + typeEntry = TypeDatabase::instance()->findType(qualifiedName); + if (typeEntry) + break; + } + } + QString enumName = enumItem->name(); QString className; |