summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorFawzi Mohamed <fawzi.mohamed@qt.io>2020-09-11 15:08:26 +0200
committerFawzi Mohamed <fawzi.mohamed@qt.io>2020-10-08 18:13:34 +0200
commitf69144471bd2e6a6b92f57e7727f28af9386d846 (patch)
tree81fd3633ceced7b25fc3c70f317924e631136d84 /tests
parent6c7ed4c013393ce414f02fe4c9a88ebebeb3e47d (diff)
Allow getting a const pointer out of a variant containing pointer
Currently A a; QVariant::fromValue(&a).value<const A*>() == nullptr; Still casting non const to const is safe, and worked in Qt5. After this change A a; QVariant::fromValue(&a).value<const A*>() == &a; Change-Id: I257049d084c712b00a338a2943d379aa478e0981 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
index 251bb803b4..8df3b4055b 100644
--- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
+++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
@@ -169,6 +169,7 @@ private slots:
void qvariant_cast_QObject_derived();
void qvariant_cast_QObject_wrapper();
void qvariant_cast_QSharedPointerQObject();
+ void qvariant_cast_const();
void toLocale();
@@ -2579,6 +2580,17 @@ void tst_QVariant::qvariant_cast_QSharedPointerQObject()
qRegisterMetaType<QSharedPointer<QObject> >();
}
+void tst_QVariant::qvariant_cast_const()
+{
+ int i = 42;
+ QVariant v = QVariant::fromValue(&i);
+ QVariant vConst = QVariant::fromValue(const_cast<const int*>(&i));
+ QCOMPARE(v.value<int *>(), &i);
+ QCOMPARE(v.value<const int *>(), &i);
+ QCOMPARE(vConst.value<int *>(), nullptr);
+ QCOMPARE(vConst.value<const int *>(), &i);
+}
+
void tst_QVariant::convertToQUint8() const
{
/* qint8. */