summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel/qmetatype/tst_qmetatype2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/kernel/qmetatype/tst_qmetatype2.cpp')
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype2.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype2.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype2.cpp
index 3c097ad0d8..856b56941a 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype2.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype2.cpp
@@ -278,6 +278,20 @@ void tst_QMetaType::convertCustomType()
QCOMPARE(v.value<CustomConvertibleType2>().m_foo, testCustom.m_foo);
}
+void tst_QMetaType::convertConstNonConst()
+{
+ auto mtConstObj = QMetaType::fromType<QObject const*>();
+ auto mtObj = QMetaType::fromType<QObject *>();
+ auto mtConstDerived = QMetaType::fromType<Derived const*>();
+ auto mtDerived = QMetaType::fromType<Derived *>();
+
+ QVERIFY(QMetaType::canConvert(mtConstObj, mtObj));
+ QVERIFY(QMetaType::canConvert(mtObj, mtConstObj)); // casting const away is allowed (but can lead to UB)
+ QVERIFY(QMetaType::canConvert(mtConstDerived, mtObj));
+ QVERIFY(QMetaType::canConvert(mtDerived, mtConstObj));
+ QVERIFY(QMetaType::canConvert(mtObj, mtConstDerived));
+}
+
void tst_QMetaType::compareCustomEqualOnlyType()
{
QMetaType type = QMetaType::fromType<CustomEqualsOnlyType>();