aboutsummaryrefslogtreecommitdiffstats
path: root/abstractmetalang.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2010-09-23 17:18:03 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-09 19:10:10 -0300
commit5633a2dbe3aba94292e1e3d03ccabe8cf25b802a (patch)
tree0658b89455d2770a054978e366d6c018bddf7131 /abstractmetalang.cpp
parentb3c0b0493fe48d2ca416f4a509a93dd1344e15b1 (diff)
Fixed AbstractMetaClassList::findEnumValue to search for the enum in all classes.
Diffstat (limited to 'abstractmetalang.cpp')
-rw-r--r--abstractmetalang.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/abstractmetalang.cpp b/abstractmetalang.cpp
index 4df4f2362..ed7934261 100644
--- a/abstractmetalang.cpp
+++ b/abstractmetalang.cpp
@@ -2216,15 +2216,22 @@ AbstractMetaEnumValue *AbstractMetaClassList::findEnumValue(const QString &name)
{
QStringList lst = name.split(QLatin1String("::"));
- Q_ASSERT_X(lst.size() == 2, "AbstractMetaClassList::findEnumValue()", "Expected qualified enum");
+ if (lst.size() > 1) {
+ QString prefixName = lst.at(0);
+ QString enumName = lst.at(1);
+ AbstractMetaClass* cl = findClass(prefixName);
+ if (cl)
+ return cl->findEnumValue(enumName, 0);
+ }
- QString prefixName = lst.at(0);
- QString enumName = lst.at(1);
-
- AbstractMetaClass *cl = findClass(prefixName);
- if (cl)
- return cl->findEnumValue(enumName, 0);
+ foreach(AbstractMetaClass* metaClass, *this) {
+ foreach(AbstractMetaEnum* metaEnum, metaClass->enums()) {
+ AbstractMetaEnumValue* enumValue = metaClass->findEnumValue(name, metaEnum);
+ if (enumValue)
+ return enumValue;
+ }
+ }
ReportHandler::warning(QString("no matching enum '%1'").arg(name));
return 0;