Prefer qFatal to assert for failure condition
authorMatt Vogt <matthew.vogt@jollamobile.com>
Fri, 17 May 2013 00:14:26 +0000 (10:14 +1000)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Sun, 19 May 2013 00:31:27 +0000 (02:31 +0200)
Otherwise the explanatory message won't be seen in release mode.

Change-Id: I5c9fbc86753ac5ecea3d0714b8f17207f6b713d6
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
src/qml/qml/v4/qv4irbuilder.cpp

index d217a01..d217b5e 100644 (file)
@@ -638,11 +638,14 @@ bool QV4IRBuilder::visit(AST::FieldMemberExpression *ast)
                     QByteArray utf8Name = name.toUtf8();
                     const char *enumName = utf8Name.constData();
 
-                    //Happens in some cases where they make properties with uppercase names
-                    Q_ASSERT_X(baseName->meta.propertyCache(m_engine), "QML compiler",
-                            QString("Error resolving enum \"%1\"").arg(name).toLatin1().constData());
+                    const QQmlPropertyCache *cache = baseName->meta.propertyCache(m_engine);
+                    if (!cache) {
+                        //Happens in some cases where they make properties with uppercase names
+                        qFatal("QV4: Unable to resolve enum: '%s'",
+                               QString(*baseName->id + QLatin1Char('.') + ast->name.toString()).toLatin1().constData());
+                    }
 
-                    const QMetaObject *meta = baseName->meta.propertyCache(m_engine)->firstCppMetaObject();
+                    const QMetaObject *meta = cache->firstCppMetaObject();
                     bool found = false;
                     for (int ii = 0; !found && ii < meta->enumeratorCount(); ++ii) {
                         QMetaEnum e = meta->enumerator(ii);