From 928ddf32af926ffa47884453d6d5e5a4cb4b82b2 Mon Sep 17 00:00:00 2001 From: Semih Yavuz Date: Thu, 15 Aug 2024 15:34:04 +0200 Subject: [PATCH] Revert "QMetaType: extract the signedness of a QFlags enum type" This reverts commit b957400b64e2fb9f3933c09d14d486bd1f4e8468. Reason for revert: This blocks dependency update bot by breaking the test tst_declarative_positioning_core. The reverted patch however reveals the incorrect behavior regarding signedness of the flagged enum types in qtdeclarative. It is tracked by QTBUG-128131. Fixes: QTBUG-128122 Change-Id: I3abb65daf3fd5c09c99508937e0010ee2cd3b898 Reviewed-by: Thiago Macieira --- src/corelib/kernel/qmetatype.cpp | 7 +------ src/corelib/kernel/qmetatype.h | 8 +++----- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 95845b7a9da..1c2665e53c0 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -2979,13 +2979,8 @@ bool QMetaType::hasRegisteredDataStreamOperators() const If this metatype represents an enumeration, this method returns a metatype of a numeric class of the same signedness and size as the enums underlying type. - If it represents a QFlags type, it returns a metatype of a numeric class - with the same signedness and size as that \l QFlags::Int type. + If it represents a QFlags type, it returns QMetaType::Int. In all other cases an invalid QMetaType is returned. - - Do note the metatype is synthesized from size and signedness and may thus - not match the actual underlying type of the enum itself. That is, it will - never return the metatype for \c{char}, \c{long}, \c{unsigned long}. */ QMetaType QMetaType::underlyingType() const { diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 80d850ff7a6..f3dee0433b2 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -1267,12 +1267,10 @@ namespace QtPrivate { template inline constexpr bool IsQmlListType = false; - template::value, bool = QtPrivate::IsQFlags::value> + template::value> constexpr bool IsUnsignedEnum = false; - template constexpr bool IsUnsignedEnum = - !std::is_signed_v>; - template constexpr bool IsUnsignedEnum = - !std::is_signed_v>; + template + constexpr bool IsUnsignedEnum = !std::is_signed_v>; template struct QMetaTypeTypeFlags