diff options
-rw-r--r-- | src/corelib/kernel/qvariant.cpp | 8 | ||||
-rw-r--r-- | tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp | 6 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 9fb30c6f28..3c3a5a84b0 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -157,6 +157,8 @@ static std::optional<qlonglong> qConvertToNumber(const QVariant::Private *d, boo case QMetaType::ULongLong: case QMetaType::UInt: case QMetaType::UChar: + case QMetaType::Char16: + case QMetaType::Char32: case QMetaType::UShort: case QMetaType::ULong: return qlonglong(qMetaTypeUNumber(d)); @@ -184,6 +186,8 @@ static std::optional<qreal> qConvertToRealNumber(const QVariant::Private *d) case QMetaType::ULongLong: case QMetaType::UInt: case QMetaType::UChar: + case QMetaType::Char16: + case QMetaType::Char32: case QMetaType::UShort: case QMetaType::ULong: return qreal(qMetaTypeUNumber(d)); @@ -2140,6 +2144,8 @@ static bool qIsNumericType(uint tp) Q_UINT64_C(1) << QMetaType::Double | Q_UINT64_C(1) << QMetaType::Float | Q_UINT64_C(1) << QMetaType::Char | + Q_UINT64_C(1) << QMetaType::Char16 | + Q_UINT64_C(1) << QMetaType::Char32 | Q_UINT64_C(1) << QMetaType::SChar | Q_UINT64_C(1) << QMetaType::UChar | Q_UINT64_C(1) << QMetaType::Short | @@ -2227,7 +2233,7 @@ static int numericTypePromotion(const QtPrivate::QMetaTypeInterface *iface1, auto isUnsigned = [](uint tp) { // only types for which sizeof(T) >= sizeof(int); lesser ones promote to int return tp == QMetaType::ULongLong || tp == QMetaType::ULong || - tp == QMetaType::UInt; + tp == QMetaType::UInt || tp == QMetaType::Char32; }; bool isUnsigned1 = isUnsigned(t1); bool isUnsigned2 = isUnsigned(t2); diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index ccb7952407..ff41873a85 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -2836,6 +2836,8 @@ QT_WARNING_POP addList(std::array{ false, true }); addList(std::array{ QCborSimpleType{}, QCborSimpleType::False, QCborSimpleType(0xff) }); addSingleType(char(0)); + addSingleType(char16_t(0)); + addSingleType(char32_t(0)); addSingleType(qint8(0)); addSingleType(quint8(0)); addSingleType(qint16(0)); @@ -2856,6 +2858,10 @@ QT_WARNING_POP addComparePair(char(127), qint8(127)); addComparePair(char(127), quint8(127)); addComparePair(qint8(-1), quint8(255)); + addComparePair(char16_t(256), qint8(-1)); + addComparePair(char16_t(256), short(-1)); + addComparePair(char16_t(256), int(-1)); + addComparePair(char32_t(256), int(-1)); addComparePair(0U, -1); addComparePair(~0U, -1); addComparePair(Q_UINT64_C(0), -1); |