@@ -951,9 +951,17 @@ AbstractMetaEnum *AbstractMetaBuilder::traverseEnum(EnumModelItem enum_item, Abs
951
951
}
952
952
953
953
QString qualified_name = enum_item->qualifiedName ().join (" ::" );
954
+ QString enum_name = enum_item->name ();
955
+
956
+ bool hasQEnumDeclaration = enumsDeclarations.contains (qualified_name)
957
+ || enumsDeclarations.contains (enum_name);
954
958
955
959
TypeEntry *type_entry = TypeDatabase::instance ()->findType (qualified_name);
956
- QString enum_name = enum_item->name ();
960
+ if (hasQEnumDeclaration && !type_entry) {
961
+ // automatically add enum type declared as Q_ENUM
962
+ type_entry = new TypeEntry (qualified_name, TypeEntry::EnumType);
963
+ TypeDatabase::instance ()->addType (type_entry);
964
+ }
957
965
958
966
QString class_name;
959
967
if (m_current_class)
@@ -969,12 +977,11 @@ AbstractMetaEnum *AbstractMetaBuilder::traverseEnum(EnumModelItem enum_item, Abs
969
977
ReportHandler::warning (QString (" enum '%1' does not have a type entry or is not an enum" )
970
978
.arg (qualified_name));
971
979
m_rejected_enums.insert (qualified_name, NotInTypeSystem);
972
- return 0 ;
980
+ return 0 ;
973
981
}
974
982
975
983
AbstractMetaEnum *meta_enum = createMetaEnum ();
976
- if ( enumsDeclarations.contains (qualified_name)
977
- || enumsDeclarations.contains (enum_name)) {
984
+ if (hasQEnumDeclaration) {
978
985
meta_enum->setHasQEnumsDeclaration (true );
979
986
}
980
987
@@ -1124,8 +1131,8 @@ AbstractMetaClass *AbstractMetaBuilder::traverseClass(ClassModelItem class_item)
1124
1131
1125
1132
parseQ_Property (meta_class, class_item->propertyDeclarations ());
1126
1133
1127
- traverseFunctions (model_dynamic_cast<ScopeModelItem>(class_item), meta_class);
1128
1134
traverseEnums (model_dynamic_cast<ScopeModelItem>(class_item), meta_class, class_item->enumsDeclarations ());
1135
+ traverseFunctions (model_dynamic_cast<ScopeModelItem>(class_item), meta_class);
1129
1136
traverseFields (model_dynamic_cast<ScopeModelItem>(class_item), meta_class);
1130
1137
1131
1138
// Inner classes
0 commit comments