From d4cd7bf5ff089034d363fbd750a040b3f30abd55 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 9 Apr 2025 09:00:38 +0200 Subject: [PATCH] tst_QMetaObject: check a few functions with QVector instead of QList QVector instead of QList is currently still treated specially, being considered normalized even if a signature piped through normalizeSignature() would have changed. We'd like to get rid of this special treatment, so add some tests for invokeMethod() + Q_ARG, which we should continue to support. Pick-to: 6.8 6.5 Task-number: QTBUG-135572 Change-Id: Ie09c80d2a8603a268859f395797196013efd8c0f Reviewed-by: Fabian Kosmale (cherry picked from commit 1fa31be7ce3a6899f1c1597311d7593648ecd1d8) Reviewed-by: Qt Cherry-pick Bot --- .../kernel/qmetaobject/tst_qmetaobject.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp index 6b2b98e0eac..0d57fbf3c85 100644 --- a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp +++ b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp @@ -791,6 +791,12 @@ void tst_QMetaObject::invokeMetaMember() Q_ARG(QList, argument))); QCOMPARE(returnValue, argument); QCOMPARE(obj.slotResult, QString("sl13")); + // same, testing the QList/QVector aliasing: + QVERIFY(QMetaObject::invokeMethod(&obj, "sl13", + Q_RETURN_ARG(QVector, returnValue), + Q_ARG(QVector, argument))); + QCOMPARE(returnValue, argument); + QCOMPARE(obj.slotResult, QString("sl13")); // return qint64 qint64 return64; @@ -1578,6 +1584,12 @@ void tst_QMetaObject::invokeBlockingQueuedMetaMember() Q_ARG(QList, argument))); QCOMPARE(returnValue, argument); QCOMPARE(obj.slotResult, QString("sl13")); + // same, testing QVector/QList aliasing: + QVERIFY(QMetaObject::invokeMethod(&obj, "sl13", Qt::BlockingQueuedConnection, + Q_RETURN_ARG(QVector, returnValue), + Q_ARG(QVector, argument))); + QCOMPARE(returnValue, argument); + QCOMPARE(obj.slotResult, QString("sl13")); // return qint64 qint64 return64; @@ -2117,7 +2129,7 @@ void tst_QMetaObject::invokeQueuedAutoRegister() &obj, "slotWithRegistrableArgument", Qt::QueuedConnection, Q_ARG(QtTestObject *, shared.data()), Q_ARG(QPointer, shared.data()), Q_ARG(QSharedPointer, shared), Q_ARG(QWeakPointer, shared), - Q_ARG(QList, QList()), + Q_ARG(QVector, QVector()), // check QVector/QList aliasing Q_ARG(QList, QList()))); QVERIFY(obj.slotResult.isEmpty()); qApp->processEvents(QEventLoop::AllEvents); @@ -2340,6 +2352,7 @@ void tst_QMetaObject::customPropertyType() prop = metaObject()->property(metaObject()->indexOfProperty("value4")); QCOMPARE(prop.metaType().id(), QMetaType::QVariantList); QCOMPARE(prop.metaType(), QMetaType::fromType>()); + QCOMPARE(prop.metaType(), QMetaType::fromType>()); prop = metaObject()->property(metaObject()->indexOfProperty("value5")); QCOMPARE(prop.metaType().id(), QMetaType::QVariantList); @@ -2630,10 +2643,10 @@ void tst_QMetaObject::metaMethod() argument << QString("one") << QString("two") << QString("three"); //wrong object //QVERIFY(!sl13.invoke(this, Q_RETURN_ARG(QList, returnValue), Q_ARG(QList, argument))); - QVERIFY(!sl13.invoke(0, Q_RETURN_ARG(QList, returnValue), Q_ARG(QList, argument))); + QVERIFY(!sl13.invoke(0, Q_RETURN_ARG(QVector, returnValue), Q_ARG(QList, argument))); QVERIFY(returnValue.isEmpty()); - QVERIFY(sl13.invoke(&obj, Q_RETURN_ARG(QList, returnValue), Q_ARG(QList, argument))); + QVERIFY(sl13.invoke(&obj, Q_RETURN_ARG(QList, returnValue), Q_ARG(QVector, argument))); QCOMPARE(returnValue, argument); QCOMPARE(obj.slotResult, QString("sl13")); }