From 68b855c215865a865672e2a43a70b2033e97a0f3 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Mon, 7 Jun 2021 14:54:20 +0200 Subject: [PATCH] Universally pass QMetaType by value ... and add Qt7 TODOs where we can't because of BC. Change-Id: Idce8b677ae95231e1690ac4265dc6f06818052e7 Reviewed-by: Lars Knoll --- src/corelib/kernel/qassociativeiterable.h | 2 ++ src/corelib/kernel/qiterable_p.h | 2 +- src/corelib/kernel/qsequentialiterable.h | 2 ++ src/corelib/kernel/qvariant.h | 1 + tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp | 6 +++--- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/corelib/kernel/qassociativeiterable.h b/src/corelib/kernel/qassociativeiterable.h index b940f605b8..6fe0ff670c 100644 --- a/src/corelib/kernel/qassociativeiterable.h +++ b/src/corelib/kernel/qassociativeiterable.h @@ -122,12 +122,14 @@ public: { } + // ### Qt7: Pass QMetaType as value rather than const ref. QAssociativeIterable(const QMetaAssociation &metaAssociation, const QMetaType &metaType, void *iterable) : QIterable(metaAssociation, metaType.alignOf(), iterable) { } + // ### Qt7: Pass QMetaType as value rather than const ref. QAssociativeIterable(const QMetaAssociation &metaAssociation, const QMetaType &metaType, const void *iterable) : QIterable(metaAssociation, metaType.alignOf(), iterable) diff --git a/src/corelib/kernel/qiterable_p.h b/src/corelib/kernel/qiterable_p.h index 979ef49b18..d975a591fb 100644 --- a/src/corelib/kernel/qiterable_p.h +++ b/src/corelib/kernel/qiterable_p.h @@ -59,7 +59,7 @@ QT_BEGIN_NAMESPACE namespace QIterablePrivate { template -static QVariant retrieveElement(const QMetaType &type, Callback callback) +static QVariant retrieveElement(QMetaType type, Callback callback) { QVariant v(type); void *dataPtr; diff --git a/src/corelib/kernel/qsequentialiterable.h b/src/corelib/kernel/qsequentialiterable.h index 8755b07aec..7b08e2afa3 100644 --- a/src/corelib/kernel/qsequentialiterable.h +++ b/src/corelib/kernel/qsequentialiterable.h @@ -115,12 +115,14 @@ public: { } + // ### Qt7: Pass QMetaType as value rather than const ref. QSequentialIterable(const QMetaSequence &metaSequence, const QMetaType &metaType, void *iterable) : QIterable(metaSequence, metaType.alignOf(), iterable) { } + // ### Qt7: Pass QMetaType as value rather than const ref. QSequentialIterable(const QMetaSequence &metaSequence, const QMetaType &metaType, const void *iterable) : QIterable(metaSequence, metaType.alignOf(), iterable) diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 9ebdbc4a18..ae39946cc3 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -666,6 +666,7 @@ namespace QtPrivate { class Q_CORE_EXPORT QVariantTypeCoercer { public: + // ### Qt7: Pass QMetaType as value rather than const ref. const void *convert(const QVariant &value, const QMetaType &type); const void *coerce(const QVariant &value, const QMetaType &type); diff --git a/tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp b/tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp index 735d45da2a..60a4e3147d 100644 --- a/tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp +++ b/tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp @@ -738,7 +738,7 @@ void tst_QProperty::genericPropertyBinding() { QUntypedPropertyBinding doubleBinding(QMetaType::fromType(), - [](const QMetaType &, void *) -> bool { + [](QMetaType , void *) -> bool { Q_ASSERT(false); return true; }, QPropertyBindingSourceLocation()); @@ -746,7 +746,7 @@ void tst_QProperty::genericPropertyBinding() } QUntypedPropertyBinding intBinding(QMetaType::fromType(), - [](const QMetaType &metaType, void *dataPtr) -> bool { + [](QMetaType metaType, void *dataPtr) -> bool { Q_ASSERT(metaType.id() == qMetaTypeId()); int *intPtr = reinterpret_cast(dataPtr); @@ -766,7 +766,7 @@ void tst_QProperty::genericPropertyBindingBool() QVERIFY(!property.value()); QUntypedPropertyBinding boolBinding(QMetaType::fromType(), - [](const QMetaType &, void *dataPtr) -> bool { + [](QMetaType, void *dataPtr) -> bool { auto boolPtr = reinterpret_cast(dataPtr); *boolPtr = true; return true;