diff options
-rw-r--r-- | src/corelib/global/qglobal.h | 5 | ||||
-rw-r--r-- | tests/auto/corelib/global/qglobal/tst_qglobal.cpp | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index b4830bda1f..b1a22ddf03 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -656,8 +656,13 @@ template <> class QStaticAssertFailure<true> {}; #define Q_STATIC_ASSERT_PRIVATE_JOIN(A, B) Q_STATIC_ASSERT_PRIVATE_JOIN_IMPL(A, B) #define Q_STATIC_ASSERT_PRIVATE_JOIN_IMPL(A, B) A ## B +#ifdef __COUNTER__ +#define Q_STATIC_ASSERT(Condition) \ + enum {Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, __COUNTER__) = sizeof(QStaticAssertFailure<!!(Condition)>)} +#else #define Q_STATIC_ASSERT(Condition) \ enum {Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, __LINE__) = sizeof(QStaticAssertFailure<!!(Condition)>)} +#endif /* __COUNTER__ */ #define Q_STATIC_ASSERT_X(Condition, Message) Q_STATIC_ASSERT(Condition) #endif diff --git a/tests/auto/corelib/global/qglobal/tst_qglobal.cpp b/tests/auto/corelib/global/qglobal/tst_qglobal.cpp index 3696ee264f..290afec776 100644 --- a/tests/auto/corelib/global/qglobal/tst_qglobal.cpp +++ b/tests/auto/corelib/global/qglobal/tst_qglobal.cpp @@ -290,6 +290,11 @@ void tst_QGlobal::qstaticassert() Q_UNUSED(tmp1); Q_UNUSED(tmp2); Q_UNUSED(tmp3); +#ifdef __COUNTER__ + // if the compiler supports __COUNTER__, multiple + // Q_STATIC_ASSERT's on a single line should compile: + Q_STATIC_ASSERT(true); Q_STATIC_ASSERT_X(!false, ""); +#endif // __COUNTER__ QVERIFY(true); // if the test compiles it has passed. } |