From b7da94ce5251d91acd60d4c82684f12c7d11affc Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Wed, 3 May 2017 15:22:23 +0100 Subject: QObject: turn the narrowing test into static_asserts The conditions checked are compile-time conditions anyhow. Simplify or strenghten a few conditions while at it. Change-Id: If07f2aedca4c3632d852a8fdb2b3f7eb55a96c93 Reviewed-by: Edward Welbourne Reviewed-by: James McDonnell --- tests/auto/corelib/kernel/qobject/tst_qobject.cpp | 820 ++++++++++------------ 1 file changed, 385 insertions(+), 435 deletions(-) (limited to 'tests/auto') diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp index db6bdf0809..642d48d721 100644 --- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp +++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp @@ -6926,309 +6926,261 @@ void tst_QObject::checkArgumentsForNarrowing() enum UnscopedEnum {}; enum SignedUnscopedEnum { SignedUnscopedEnumV1 = -1, SignedUnscopedEnumV2 = 1 }; - QVERIFY(sizeof(UnscopedEnum) <= sizeof(int)); - QVERIFY(sizeof(SignedUnscopedEnum) <= sizeof(int)); + // a constexpr would suffice, but MSVC2013 RTM doesn't support them... +#define IS_UNSCOPED_ENUM_SIGNED (std::is_signed::type>::value) + +#define NARROWS_IF(x, y, test) Q_STATIC_ASSERT((QtPrivate::AreArgumentsNarrowedBase::value) == (test)) +#define FITS_IF(x, y, test) Q_STATIC_ASSERT((QtPrivate::AreArgumentsNarrowedBase::value) != (test)) +#define NARROWS(x, y) NARROWS_IF(x, y, true) +#define FITS(x, y) FITS_IF(x, y, true) + + Q_STATIC_ASSERT(sizeof(UnscopedEnum) <= sizeof(int)); + Q_STATIC_ASSERT(sizeof(SignedUnscopedEnum) <= sizeof(int)); // floating point to integral - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(float, bool); + NARROWS(double, bool); + NARROWS(long double, bool); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(float, char); + NARROWS(double, char); + NARROWS(long double, char); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(float, short); + NARROWS(double, short); + NARROWS(long double, short); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(float, int); + NARROWS(double, int); + NARROWS(long double, int); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(float, long); + NARROWS(double, long); + NARROWS(long double, long); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(float, long long); + NARROWS(double, long long); + NARROWS(long double, long long); // floating point to a smaller floating point - if (sizeof(double) > sizeof(float)) { - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - } - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS_IF(double, float, (sizeof(double) > sizeof(float))); + NARROWS_IF(long double, float, (sizeof(long double) > sizeof(float))); + FITS(float, double); + FITS(float, long double); - if (sizeof(long double) > sizeof(double)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS_IF(long double, double, (sizeof(long double) > sizeof(double))); + FITS(double, long double); // integral to floating point - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(bool, float); + NARROWS(bool, double); + NARROWS(bool, long double); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(char, float); + NARROWS(char, double); + NARROWS(char, long double); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(short, float); + NARROWS(short, double); + NARROWS(short, long double); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(int, float); + NARROWS(int, double); + NARROWS(int, long double); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(long, float); + NARROWS(long, double); + NARROWS(long, long double); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(long long, float); + NARROWS(long long, double); + NARROWS(long long, long double); // enum to floating point - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(UnscopedEnum, float); + NARROWS(UnscopedEnum, double); + NARROWS(UnscopedEnum, long double); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(SignedUnscopedEnum, float); + NARROWS(SignedUnscopedEnum, double); + NARROWS(SignedUnscopedEnum, long double); // integral to smaller integral - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - if (sizeof(bool) > sizeof(char)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - else - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - - if (sizeof(bool) > sizeof(short)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - else - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - - if (sizeof(bool) > sizeof(int)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - else - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - - if (sizeof(bool) > sizeof(long)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - else - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - - if (sizeof(bool) > sizeof(long long)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - else - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - - if (sizeof(short) > sizeof(char)) { - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - } - - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - if (sizeof(int) > sizeof(short)) { - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - } - - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - if (sizeof(long) > sizeof(int)) { - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - } - - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - if (sizeof(long long) > sizeof(long)) { - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - } - - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); + FITS(bool, bool); + FITS(char, char); + FITS(signed char, signed char); + FITS(signed char, short); + FITS(signed char, int); + FITS(signed char, long); + FITS(signed char, long long); + FITS(unsigned char, unsigned char); + FITS(unsigned char, unsigned short); + FITS(unsigned char, unsigned int); + FITS(unsigned char, unsigned long); + FITS(unsigned char, unsigned long long); + + NARROWS_IF(bool, unsigned char, (sizeof(bool) > sizeof(char) || std::is_signed::value)); + NARROWS_IF(bool, unsigned short, (sizeof(bool) > sizeof(short) || std::is_signed::value)); + NARROWS_IF(bool, unsigned int, (sizeof(bool) > sizeof(int) || std::is_signed::value)); + NARROWS_IF(bool, unsigned long, (sizeof(bool) > sizeof(long) || std::is_signed::value)); + NARROWS_IF(bool, unsigned long long, (sizeof(bool) > sizeof(long long) || std::is_signed::value)); + + NARROWS_IF(short, char, (sizeof(short) > sizeof(char) || std::is_unsigned::value)); + NARROWS_IF(short, unsigned char, (sizeof(short) > sizeof(char))); + NARROWS_IF(short, signed char, (sizeof(short) > sizeof(char))); + + NARROWS_IF(unsigned short, char, (sizeof(short) > sizeof(char) || std::is_signed::value)); + NARROWS_IF(unsigned short, unsigned char, (sizeof(short) > sizeof(char))); + NARROWS_IF(unsigned short, signed char, (sizeof(short) > sizeof(char))); + + FITS(short, short); + FITS(short, int); + FITS(short, long); + FITS(short, long long); + + FITS(unsigned short, unsigned short); + FITS(unsigned short, unsigned int); + FITS(unsigned short, unsigned long); + FITS(unsigned short, unsigned long long); + + NARROWS_IF(int, char, (sizeof(int) > sizeof(char) || std::is_unsigned::value)); + NARROWS(int, unsigned char); + NARROWS_IF(int, signed char, (sizeof(int) > sizeof(char))); + NARROWS_IF(int, short, (sizeof(int) > sizeof(short))); + NARROWS(int, unsigned short); + + NARROWS_IF(unsigned int, char, (sizeof(int) > sizeof(char) || std::is_signed::value)); + NARROWS_IF(unsigned int, unsigned char, (sizeof(int) > sizeof(char))); + NARROWS(unsigned int, signed char); + NARROWS(unsigned int, short); + NARROWS_IF(unsigned int, unsigned short, (sizeof(int) > sizeof(short))); + + FITS(int, int); + FITS(int, long); + FITS(int, long long); + + FITS(unsigned int, unsigned int); + FITS(unsigned int, unsigned long); + FITS(unsigned int, unsigned long long); + + NARROWS_IF(long, char, (sizeof(long) > sizeof(char) || std::is_unsigned::value)); + NARROWS(long, unsigned char); + NARROWS_IF(long, signed char, (sizeof(long) > sizeof(char))); + NARROWS_IF(long, short, (sizeof(long) > sizeof(short))); + NARROWS(long, unsigned short); + NARROWS_IF(long, int, (sizeof(long) > sizeof(int))); + NARROWS(long, unsigned int); + + NARROWS_IF(unsigned long, char, (sizeof(long) > sizeof(char) || std::is_signed::value)); + NARROWS_IF(unsigned long, unsigned char, (sizeof(long) > sizeof(char))); + NARROWS(unsigned long, signed char); + NARROWS(unsigned long, short); + NARROWS_IF(unsigned long, unsigned short, (sizeof(long) > sizeof(short))); + NARROWS(unsigned long, int); + NARROWS_IF(unsigned long, unsigned int, (sizeof(long) > sizeof(int))); + + FITS(long, long); + FITS(long, long long); + + FITS(unsigned long, unsigned long); + FITS(unsigned long, unsigned long long); + + NARROWS_IF(long long, char, (sizeof(long long) > sizeof(char) || std::is_unsigned::value)); + NARROWS(long long, unsigned char); + NARROWS_IF(long long, signed char, (sizeof(long long) > sizeof(char))); + NARROWS_IF(long long, short, (sizeof(long long) > sizeof(short))); + NARROWS(long long, unsigned short); + NARROWS_IF(long long, int, (sizeof(long long) > sizeof(int))); + NARROWS(long long, unsigned int); + NARROWS_IF(long long, long, (sizeof(long long) > sizeof(long))); + NARROWS(long long, unsigned long); + + NARROWS_IF(unsigned long long, char, (sizeof(long long) > sizeof(char) || std::is_signed::value)); + NARROWS_IF(unsigned long long, unsigned char, (sizeof(long long) > sizeof(char))); + NARROWS(unsigned long long, signed char); + NARROWS(unsigned long long, short); + NARROWS_IF(unsigned long long, unsigned short, (sizeof(long long) > sizeof(short))); + NARROWS(unsigned long long, int); + NARROWS_IF(unsigned long long, unsigned int, (sizeof(long long) > sizeof(int))); + NARROWS(unsigned long long, long); + NARROWS_IF(unsigned long long, unsigned long, (sizeof(long long) > sizeof(long))); + + FITS(long long, long long); + FITS(unsigned long long, unsigned long long); // integral to integral with different signedness. smaller ones tested above - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(signed char, unsigned char); + NARROWS(signed char, unsigned short); + NARROWS(signed char, unsigned int); + NARROWS(signed char, unsigned long); + NARROWS(signed char, unsigned long long); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(unsigned char, signed char); + FITS(unsigned char, short); + FITS(unsigned char, int); + FITS(unsigned char, long); + FITS(unsigned char, long long); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(short, unsigned short); + NARROWS(short, unsigned int); + NARROWS(short, unsigned long); + NARROWS(short, unsigned long long); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(unsigned short, short); + FITS(unsigned short, int); + FITS(unsigned short, long); + FITS(unsigned short, long long); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(int, unsigned int); + NARROWS(int, unsigned long); + NARROWS(int, unsigned long long); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QCOMPARE((QtPrivate::AreArgumentsNarrowedBase::value), sizeof(int) >= sizeof(long)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(unsigned int, int); + NARROWS_IF(unsigned int, long, (sizeof(int) >= sizeof(long))); + FITS(unsigned int, long long); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(long, unsigned long); + NARROWS(long, unsigned long long); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QCOMPARE((QtPrivate::AreArgumentsNarrowedBase::value), sizeof(long) >= sizeof(long long)); + NARROWS(unsigned long, long); + NARROWS_IF(unsigned long, long long, (sizeof(long) >= sizeof(long long))); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(long long, unsigned long long); + NARROWS(unsigned long long, long long); // enum to smaller integral - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - if (std::is_signed::type>::value) { - if (sizeof(UnscopedEnum) > sizeof(char)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - else - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - - if (sizeof(UnscopedEnum) > sizeof(short)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - else - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - } else { - if (sizeof(UnscopedEnum) > sizeof(bool)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - else - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); + // (note that we know that sizeof(UnscopedEnum) <= sizeof(int) + FITS(UnscopedEnum, UnscopedEnum); + FITS(SignedUnscopedEnum, SignedUnscopedEnum); - if (sizeof(UnscopedEnum) > sizeof(char)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - else - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS_IF(UnscopedEnum, char, ((sizeof(UnscopedEnum) > sizeof(char)) || (sizeof(UnscopedEnum) == sizeof(char) && IS_UNSCOPED_ENUM_SIGNED == std::is_signed::value))); + NARROWS_IF(UnscopedEnum, signed char, ((sizeof(UnscopedEnum) > sizeof(char)) || (sizeof(UnscopedEnum) == sizeof(char) && !IS_UNSCOPED_ENUM_SIGNED))); + NARROWS_IF(UnscopedEnum, unsigned char, ((sizeof(UnscopedEnum) > sizeof(char)) || IS_UNSCOPED_ENUM_SIGNED)); - if (sizeof(UnscopedEnum) > sizeof(short)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - else - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS_IF(UnscopedEnum, short, ((sizeof(UnscopedEnum) > sizeof(short)) || (sizeof(UnscopedEnum) == sizeof(short) && !IS_UNSCOPED_ENUM_SIGNED))); + NARROWS_IF(UnscopedEnum, unsigned short, ((sizeof(UnscopedEnum) > sizeof(short)) || IS_UNSCOPED_ENUM_SIGNED)); - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - } + NARROWS_IF(UnscopedEnum, int, (sizeof(UnscopedEnum) == sizeof(int) && !IS_UNSCOPED_ENUM_SIGNED)); + NARROWS_IF(UnscopedEnum, unsigned int, IS_UNSCOPED_ENUM_SIGNED); - QVERIFY(std::is_signed::type>::value); + NARROWS_IF(UnscopedEnum, long, (sizeof(UnscopedEnum) == sizeof(long) && !IS_UNSCOPED_ENUM_SIGNED)); + NARROWS_IF(UnscopedEnum, unsigned long, IS_UNSCOPED_ENUM_SIGNED); - if (sizeof(SignedUnscopedEnum) > sizeof(char)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - else - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS_IF(UnscopedEnum, long long, (sizeof(UnscopedEnum) == sizeof(long long) && !IS_UNSCOPED_ENUM_SIGNED)); + NARROWS_IF(UnscopedEnum, unsigned long long, IS_UNSCOPED_ENUM_SIGNED); - if (sizeof(SignedUnscopedEnum) > sizeof(short)) - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - else - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); + Q_STATIC_ASSERT(std::is_signed::type>::value); - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY(!(QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS_IF(SignedUnscopedEnum, signed char, (sizeof(SignedUnscopedEnum) > sizeof(char))); + NARROWS_IF(SignedUnscopedEnum, short, (sizeof(SignedUnscopedEnum) > sizeof(short))); + FITS(SignedUnscopedEnum, int); + FITS(SignedUnscopedEnum, long); + FITS(SignedUnscopedEnum, long long); enum class ScopedEnumBackedBySChar : signed char { A }; @@ -7242,192 +7194,190 @@ void tst_QObject::checkArgumentsForNarrowing() enum class ScopedEnumBackedByLongLong : long long { A }; enum class ScopedEnumBackedByULongLong : unsigned long long { A }; - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - if (sizeof(short) > sizeof(char)) { - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - } - - if (sizeof(int) > sizeof(short)) { - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - } - - if (sizeof(long) > sizeof(int)) { - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - } - - if (sizeof(long long) > sizeof(long)) { - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - } + FITS(ScopedEnumBackedBySChar, ScopedEnumBackedBySChar); + FITS(ScopedEnumBackedByUChar, ScopedEnumBackedByUChar); + FITS(ScopedEnumBackedByShort, ScopedEnumBackedByShort); + FITS(ScopedEnumBackedByUShort, ScopedEnumBackedByUShort); + FITS(ScopedEnumBackedByInt, ScopedEnumBackedByInt); + FITS(ScopedEnumBackedByUInt, ScopedEnumBackedByUInt); + FITS(ScopedEnumBackedByLong, ScopedEnumBackedByLong); + FITS(ScopedEnumBackedByULong, ScopedEnumBackedByULong); + FITS(ScopedEnumBackedByLongLong, ScopedEnumBackedByLongLong); + FITS(ScopedEnumBackedByULongLong, ScopedEnumBackedByULongLong); + + FITS(ScopedEnumBackedBySChar, signed char); + FITS(ScopedEnumBackedByUChar, unsigned char); + FITS(ScopedEnumBackedByShort, short); + FITS(ScopedEnumBackedByUShort, unsigned short); + FITS(ScopedEnumBackedByInt, int); + FITS(ScopedEnumBackedByUInt, unsigned int); + FITS(ScopedEnumBackedByLong, long); + FITS(ScopedEnumBackedByULong, unsigned long); + FITS(ScopedEnumBackedByLongLong, long long); + FITS(ScopedEnumBackedByULongLong, unsigned long long); + + FITS(ScopedEnumBackedBySChar, signed char); + FITS(ScopedEnumBackedBySChar, short); + FITS(ScopedEnumBackedBySChar, int); + FITS(ScopedEnumBackedBySChar, long); + FITS(ScopedEnumBackedBySChar, long long); + + FITS(ScopedEnumBackedByUChar, unsigned char); + FITS(ScopedEnumBackedByUChar, unsigned short); + FITS(ScopedEnumBackedByUChar, unsigned int); + FITS(ScopedEnumBackedByUChar, unsigned long); + FITS(ScopedEnumBackedByUChar, unsigned long long); + + NARROWS_IF(ScopedEnumBackedByShort, char, (sizeof(short) > sizeof(char) || std::is_unsigned::value)); + NARROWS_IF(ScopedEnumBackedByUShort, char, (sizeof(short) > sizeof(char) || std::is_signed::value)); + NARROWS_IF(ScopedEnumBackedByInt, char, (sizeof(int) > sizeof(char) || std::is_unsigned::value)); + NARROWS_IF(ScopedEnumBackedByUInt, char, (sizeof(int) > sizeof(char) || std::is_signed::value)); + NARROWS_IF(ScopedEnumBackedByLong, char, (sizeof(long) > sizeof(char) || std::is_unsigned::value)); + NARROWS_IF(ScopedEnumBackedByULong, char, (sizeof(long) > sizeof(char) || std::is_signed::value)); + NARROWS_IF(ScopedEnumBackedByLongLong, char, (sizeof(long long) > sizeof(char) || std::is_unsigned::value)); + NARROWS_IF(ScopedEnumBackedByULongLong, char, (sizeof(long long) > sizeof(char) || std::is_signed::value)); + + NARROWS_IF(ScopedEnumBackedByShort, signed char, (sizeof(short) > sizeof(char))); + NARROWS(ScopedEnumBackedByUShort, signed char); + NARROWS_IF(ScopedEnumBackedByInt, signed char, (sizeof(int) > sizeof(char))); + NARROWS(ScopedEnumBackedByUInt, signed char); + NARROWS_IF(ScopedEnumBackedByLong, signed char, (sizeof(long) > sizeof(char))); + NARROWS(ScopedEnumBackedByULong, signed char); + NARROWS_IF(ScopedEnumBackedByLongLong, signed char, (sizeof(long long) > sizeof(char))); + NARROWS(ScopedEnumBackedByULongLong, signed char); + + NARROWS(ScopedEnumBackedByShort, unsigned char); + NARROWS_IF(ScopedEnumBackedByUShort, unsigned char, (sizeof(short) > sizeof(char))); + NARROWS(ScopedEnumBackedByInt, unsigned char); + NARROWS_IF(ScopedEnumBackedByUInt, unsigned char, (sizeof(int) > sizeof(char))); + NARROWS(ScopedEnumBackedByLong, unsigned char); + NARROWS_IF(ScopedEnumBackedByULong, unsigned char, (sizeof(long) > sizeof(char))); + NARROWS(ScopedEnumBackedByLongLong, unsigned char); + NARROWS_IF(ScopedEnumBackedByULongLong, unsigned char, (sizeof(long long) > sizeof(char))); + + NARROWS_IF(ScopedEnumBackedByInt, short, (sizeof(int) > sizeof(short))); + NARROWS(ScopedEnumBackedByUInt, short); + NARROWS_IF(ScopedEnumBackedByLong, short, (sizeof(long) > sizeof(short))); + NARROWS(ScopedEnumBackedByULong, short); + NARROWS_IF(ScopedEnumBackedByLongLong, short, (sizeof(long long) > sizeof(short))); + NARROWS(ScopedEnumBackedByULongLong, short); + + NARROWS(ScopedEnumBackedByInt, unsigned short); + NARROWS_IF(ScopedEnumBackedByUInt, unsigned short, (sizeof(int) > sizeof(short))); + NARROWS(ScopedEnumBackedByLong, unsigned short); + NARROWS_IF(ScopedEnumBackedByULong, unsigned short, (sizeof(long) > sizeof(short))); + NARROWS(ScopedEnumBackedByLongLong, unsigned short); + NARROWS_IF(ScopedEnumBackedByULongLong, unsigned short, (sizeof(long long) > sizeof(short))); + + NARROWS_IF(ScopedEnumBackedByLong, int, (sizeof(long) > sizeof(int))); + NARROWS(ScopedEnumBackedByULong, int); + NARROWS_IF(ScopedEnumBackedByLongLong, int, (sizeof(long long) > sizeof(int))); + NARROWS(ScopedEnumBackedByULongLong, int); + + NARROWS(ScopedEnumBackedByLong, unsigned int); + NARROWS_IF(ScopedEnumBackedByULong, unsigned int, (sizeof(long) > sizeof(int))); + NARROWS(ScopedEnumBackedByLongLong, unsigned int); + NARROWS_IF(ScopedEnumBackedByULongLong, unsigned int, (sizeof(long long) > sizeof(int))); + + NARROWS_IF(ScopedEnumBackedByLongLong, long, (sizeof(long long) > sizeof(long))); + NARROWS(ScopedEnumBackedByULongLong, long); + + NARROWS(ScopedEnumBackedByLongLong, unsigned long); + NARROWS_IF(ScopedEnumBackedByULongLong, unsigned long, (sizeof(long long) > sizeof(long))); // different signedness of the underlying type - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QCOMPARE((QtPrivate::AreArgumentsNarrowedBase::value), sizeof(ScopedEnumBackedByUInt) >= sizeof(long)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QCOMPARE((QtPrivate::AreArgumentsNarrowedBase::value), sizeof(ScopedEnumBackedByULong) >= sizeof(long long)); - - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((QtPrivate::AreArgumentsNarrowedBase::value)); + NARROWS(SignedUnscopedEnum, unsigned char); + NARROWS(SignedUnscopedEnum, unsigned short); + NARROWS(SignedUnscopedEnum, unsigned int); + NARROWS(SignedUnscopedEnum, unsigned long); + NARROWS(SignedUnscopedEnum, unsigned long long); + + NARROWS(ScopedEnumBackedBySChar, unsigned char); + NARROWS(ScopedEnumBackedBySChar, unsigned short); + NARROWS(ScopedEnumBackedBySChar, unsigned int); + NARROWS(ScopedEnumBackedBySChar, unsigned long); + NARROWS(ScopedEnumBackedBySChar, unsigned long long); + + NARROWS(ScopedEnumBackedByShort, unsigned char); + NARROWS(ScopedEnumBackedByShort, unsigned short); + NARROWS(ScopedEnumBackedByShort, unsigned int); + NARROWS(ScopedEnumBackedByShort, unsigned long); + NARROWS(ScopedEnumBackedByShort, unsigned long long); + + NARROWS(ScopedEnumBackedByInt, unsigned char); + NARROWS(ScopedEnumBackedByInt, unsigned short); + NARROWS(ScopedEnumBackedByInt, unsigned int); + NARROWS(ScopedEnumBackedByInt, unsigned long); + NARROWS(ScopedEnumBackedByInt, unsigned long long); + + NARROWS(ScopedEnumBackedByLong, unsigned char); + NARROWS(ScopedEnumBackedByLong, unsigned short); + NARROWS(ScopedEnumBackedByLong, unsigned int); + NARROWS(ScopedEnumBackedByLong, unsigned long); + NARROWS(ScopedEnumBackedByLong, unsigned long long); + + NARROWS(ScopedEnumBackedByLongLong, unsigned char); + NARROWS(ScopedEnumBackedByLongLong, unsigned short); + NARROWS(ScopedEnumBackedByLongLong, unsigned int); + NARROWS(ScopedEnumBackedByLongLong, unsigned long); + NARROWS(ScopedEnumBackedByLongLong, unsigned long long); + + NARROWS(ScopedEnumBackedByUChar, signed char); + FITS_IF(ScopedEnumBackedByUChar, short, (sizeof(char) < sizeof(short))); + FITS_IF(ScopedEnumBackedByUChar, int, (sizeof(char) < sizeof(int))); + FITS_IF(ScopedEnumBackedByUChar, long, (sizeof(char) < sizeof(long))); + FITS_IF(ScopedEnumBackedByUChar, long long, (sizeof(char) < sizeof(long long))); + + NARROWS(ScopedEnumBackedByUShort, signed char); + NARROWS(ScopedEnumBackedByUShort, short); + FITS_IF(ScopedEnumBackedByUShort, int, (sizeof(short) < sizeof(int))); + FITS_IF(ScopedEnumBackedByUShort, long, (sizeof(short) < sizeof(long))); + FITS_IF(ScopedEnumBackedByUShort, long long, (sizeof(short) < sizeof(long long))); + + NARROWS(ScopedEnumBackedByUInt, signed char); + NARROWS(ScopedEnumBackedByUInt, short); + NARROWS(ScopedEnumBackedByUInt, int); + FITS_IF(ScopedEnumBackedByUInt, long, (sizeof(ScopedEnumBackedByUInt) < sizeof(long))); + FITS(ScopedEnumBackedByUInt, long long); + + NARROWS(ScopedEnumBackedByULong, signed char); + NARROWS(ScopedEnumBackedByULong, short); + NARROWS(ScopedEnumBackedByULong, int); + NARROWS(ScopedEnumBackedByULong, long); + FITS_IF(ScopedEnumBackedByULong, long long, (sizeof(ScopedEnumBackedByULong) < sizeof(long long))); + + NARROWS(ScopedEnumBackedByULongLong, signed char); + NARROWS(ScopedEnumBackedByULongLong, short); + NARROWS(ScopedEnumBackedByULongLong, int); + NARROWS(ScopedEnumBackedByULongLong, long); + NARROWS(ScopedEnumBackedByULongLong, long long); // other types which should be always unaffected - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); + FITS(void *, void *); + + FITS(QString, QString); + FITS(QString &, QString &); + FITS(const QString &, const QString &); + + FITS(QObject, QObject); + FITS(QObject *, QObject *); + FITS(const QObject *, const QObject *); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); + FITS(std::nullptr_t, std::nullptr_t); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); + FITS(QString, QObject); + FITS(QString, QVariant); + FITS(QString, void *); + FITS(QString, long long); + FITS(bool, const QObject *&); + FITS(int (*)(bool), void (QObject::*)()); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); +#undef IS_UNSCOPED_ENUM_SIGNED - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); - QVERIFY((!QtPrivate::AreArgumentsNarrowedBase::value)); +#undef NARROWS_IF +#undef FITS_IF +#undef NARROWS +#undef FITS } // Test for QtPrivate::HasQ_OBJECT_Macro -- cgit v1.2.3