Adapt to QMetaMethod::typeName() behavioral change for "void"
authorKent Hansen <kent.hansen@nokia.com>
Tue, 20 Mar 2012 19:07:50 +0000 (20:07 +0100)
committerQt by Nokia <qt-info@nokia.com>
Thu, 22 Mar 2012 08:15:25 +0000 (09:15 +0100)
QMetaMethod::typeName() has been changed to return "void",
rather than an empty string, when the return type is void.

Change-Id: Ifc903ba60a06ffaefe27c94fe629698d64904d94
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
src/qml/qml/qqmlpropertycache.cpp
tests/auto/qml/qqmlmetaobject/tst_qqmlmetaobject.cpp

index af6cd92..afab665 100644 (file)
@@ -196,10 +196,11 @@ void QQmlPropertyData::lazyLoad(const QMetaMethod &m)
     flags |= IsFunction;
     if (m.methodType() == QMetaMethod::Signal)
         flags |= IsSignal;
-    propType = QVariant::Invalid;
+    propType = QMetaType::Void;
 
     const char *returnType = m.typeName();
-    if (returnType && *returnType) {
+    Q_ASSERT(returnType != 0);
+    if ((*returnType != 'v') || (qstrcmp(returnType+1, "oid") != 0)) {
         propTypeName = returnType;
         flags |= NotFullyResolved;
     }
index ca48f02..8e35c24 100644 (file)
@@ -251,7 +251,7 @@ void tst_QQmlMetaObject::property()
     QCOMPARE(signal.parameterTypes(), QList<QByteArray>());
     QCOMPARE(signal.parameterNames(), QList<QByteArray>());
     QCOMPARE(signal.tag(), "");
-    QCOMPARE(signal.typeName(), "");
+    QCOMPARE(signal.typeName(), "void");
     QCOMPARE(signal.returnType(), int(QMetaType::Void));
 
     QSignalSpy changedSpy(object, SIGNAL(testChanged()));
@@ -310,42 +310,42 @@ void tst_QQmlMetaObject::method_data()
     QTest::newRow("testSignal") << "signal.1.qml"
             << "testSignal()"
             << QMetaMethod::Signal
-            << int(QMetaType::Void) << ""
+            << int(QMetaType::Void) << "void"
             << QList<int>()
             << QList<QByteArray>()
             << QList<QByteArray>();
     QTest::newRow("testSignal(string foo)") << "signal.2.qml"
             << "testSignal(QString)"
             << QMetaMethod::Signal
-            << int(QMetaType::Void) << ""
+            << int(QMetaType::Void) << "void"
             << (QList<int>() << QMetaType::QString)
             << (QList<QByteArray>() << "QString")
             << (QList<QByteArray>() << "foo");
     QTest::newRow("testSignal(int foo, bool bar, real baz)") << "signal.3.qml"
             << "testSignal(int,bool,double)"
             << QMetaMethod::Signal
-            << int(QMetaType::Void) << ""
+            << int(QMetaType::Void) << "void"
             << (QList<int>() << QMetaType::Int << QMetaType::Bool << QMetaType::Double)
             << (QList<QByteArray>() << "int" << "bool" << "double")
             << (QList<QByteArray>() << "foo" << "bar" << "baz");
     QTest::newRow("testSignal(variant foo, var bar)") << "signal.4.qml"
             << "testSignal(QVariant,QVariant)"
             << QMetaMethod::Signal
-            << int(QMetaType::Void) << ""
+            << int(QMetaType::Void) << "void"
             << (QList<int>() << QMetaType::QVariant << QMetaType::QVariant)
             << (QList<QByteArray>() << "QVariant" << "QVariant")
             << (QList<QByteArray>() << "foo" << "bar");
     QTest::newRow("testSignal(color foo, date bar, url baz)") << "signal.5.qml"
             << "testSignal(QColor,QDateTime,QUrl)"
             << QMetaMethod::Signal
-            << int(QMetaType::Void) << ""
+            << int(QMetaType::Void) << "void"
             << (QList<int>() << QMetaType::QColor << QMetaType::QDateTime << QMetaType::QUrl)
             << (QList<QByteArray>() << "QColor" << "QDateTime" << "QUrl")
             << (QList<QByteArray>() << "foo" << "bar" << "baz");
     QTest::newRow("testSignal(double foo)") << "signal.6.qml"
             << "testSignal(double)"
             << QMetaMethod::Signal
-            << int(QMetaType::Void) << ""
+            << int(QMetaType::Void) << "void"
             << (QList<int>() << QMetaType::Double)
             << (QList<QByteArray>() << "double")
             << (QList<QByteArray>() << "foo");