diff options
-rw-r--r-- | src/tools/moc/generator.cpp | 12 | ||||
-rw-r--r-- | tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp | 9 |
2 files changed, 13 insertions, 8 deletions
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index c7c7d96487..ac602fd6e8 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -951,13 +951,17 @@ void Generator::generateStaticMetacall() } fprintf(out, " default: ;\n"); fprintf(out, " }\n"); - - fprintf(out, " } else if (_c == QMetaObject::IndexOfMethod) {\n"); + fprintf(out, " }"); + needElse = true; + } + if (!cdef->signalList.isEmpty()) { + Q_ASSERT(needElse); // if there is signal, there was method. + fprintf(out, " else if (_c == QMetaObject::IndexOfMethod) {\n"); fprintf(out, " int *result = reinterpret_cast<int *>(_a[0]);\n"); fprintf(out, " void **func = reinterpret_cast<void **>(_a[1]);\n"); bool anythingUsed = false; - for (int methodindex = 0; methodindex < methodList.size(); ++methodindex) { - const FunctionDef &f = methodList.at(methodindex); + for (int methodindex = 0; methodindex < cdef->signalList.size(); ++methodindex) { + const FunctionDef &f = cdef->signalList.at(methodindex); if (f.wasCloned || !f.inPrivateClass.isEmpty() || f.isStatic) continue; anythingUsed = true; diff --git a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp index 68ff8e4bb6..09fd0a7adb 100644 --- a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp +++ b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp @@ -326,6 +326,8 @@ public slots: signals: void sig0(); QString sig1(QString s1); + void sig10(QString s1, QString s2, QString s3, QString s4, QString s5, QString s6, QString s7, + QString s8, QString s9, QString s10); protected: QtTestObject(QVariant) {} @@ -725,6 +727,7 @@ typedef QString CustomString; class QtTestCustomObject: public QObject { Q_OBJECT + friend class tst_QMetaObject; public: QtTestCustomObject(): QObject(), sum(0) {} @@ -1129,11 +1132,9 @@ void tst_QMetaObject::indexOfMethodPMF() } INDEXOFMETHODPMF_HELPER(tst_QMetaObject, value7Changed, (const QString&)) - INDEXOFMETHODPMF_HELPER(tst_QMetaObject, stdSet, ()) - INDEXOFMETHODPMF_HELPER(QtTestObject, sl10, (QString,QString,QString,QString,QString,QString,QString,QString,QString,QString)) INDEXOFMETHODPMF_HELPER(QtTestObject, sig0, ()) - INDEXOFMETHODPMF_HELPER(QtTestObject, testLongLong, (qint64, quint64)) - INDEXOFMETHODPMF_HELPER(QtTestObject, testReference, (QString&)) + INDEXOFMETHODPMF_HELPER(QtTestObject, sig10, (QString,QString,QString,QString,QString,QString,QString,QString,QString,QString)) + INDEXOFMETHODPMF_HELPER(QtTestCustomObject, sig_custom, (const CustomString &)) } QTEST_MAIN(tst_QMetaObject) |