summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/tools/moc/generator.cpp12
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp9
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)