From 85b7aeaddca19aa925e3bc3ea20cbc6b01b20643 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 15 Jul 2024 13:50:09 +0200 Subject: [PATCH] Fix source compatibility with existing toString() extensions Change-Id: I946ebf0f0fa82450105e720489c4da35a77078d8 Reviewed-by: Ivan Solovev Reviewed-by: Thiago Macieira (cherry picked from commit 7dd2c5f91dd62840d37c5e17cc3f1f5ad46d9366) Reviewed-by: Qt Cherry-pick Bot --- src/testlib/qtestcase.cpp | 12 +++++++++++- src/testlib/qtestcase.qdoc | 2 +- src/testlib/qtesttostring.h | 23 ++++++----------------- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index 5648fedd639..1ffe283ce92 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -3144,7 +3144,16 @@ char *QTest::toString(const volatile QObject *vo) if (vo == nullptr) return qstrdup(""); - auto *o = const_cast(vo); + return QTest::toString(const_cast(vo)); +} + +/*! \internal +*/ +char *QTest::toString(const QObject *o) +{ + if (o == nullptr) + return qstrdup(""); + const QString &name = o->objectName(); const char *className = o->metaObject()->className(); char *msg = new char[256]; @@ -3155,6 +3164,7 @@ char *QTest::toString(const volatile QObject *vo) return msg; } + /*! \fn char *QTest::toString(const QColor &color) \internal */ diff --git a/src/testlib/qtestcase.qdoc b/src/testlib/qtestcase.qdoc index 6a067c351f8..7614f67312b 100644 --- a/src/testlib/qtestcase.qdoc +++ b/src/testlib/qtestcase.qdoc @@ -1423,7 +1423,7 @@ */ /*! - \fn template = true> char *QTest::toString(const T &value) + \fn template char *QTest::toString(const T &value) Returns a textual representation of \a value. This function is used by \l QCOMPARE() to output verbose information in case of a test failure. diff --git a/src/testlib/qtesttostring.h b/src/testlib/qtesttostring.h index a1ee4f69258..d5d48bb4f4e 100644 --- a/src/testlib/qtesttostring.h +++ b/src/testlib/qtesttostring.h @@ -81,19 +81,6 @@ inline typename std::enable_if::Value, char*>::type return msg; } -template -constexpr bool is_suitable_type_helper_v = std::disjunction_v, - std::is_same, - std::is_same - >; - -template -using is_suitable_type_v = - std::enable_if_t - && is_suitable_type_helper_v< - std::remove_const_t>>), - bool>; - } // namespace Internal Q_TESTLIB_EXPORT bool compare_string_helper(const char *t1, const char *t2, const char *actual, @@ -102,11 +89,8 @@ Q_TESTLIB_EXPORT char *formatString(const char *prefix, const char *suffix, size Q_TESTLIB_EXPORT char *toHexRepresentation(const char *ba, qsizetype length); Q_TESTLIB_EXPORT char *toPrettyCString(const char *unicode, qsizetype length); Q_TESTLIB_EXPORT char *toPrettyUnicode(QStringView string); -Q_TESTLIB_EXPORT char *toString(const char *); -Q_TESTLIB_EXPORT char *toString(const volatile void *); -Q_TESTLIB_EXPORT char *toString(const volatile QObject *); -template = true> +template inline char *toString(const T &t) { return Internal::toString(t); @@ -121,6 +105,11 @@ inline char *toString(const std::tuple &tuple); template inline char *toString(std::chrono::duration duration); +Q_TESTLIB_EXPORT char *toString(const char *); +Q_TESTLIB_EXPORT char *toString(const volatile void *); +Q_TESTLIB_EXPORT char *toString(const QObject *); +Q_TESTLIB_EXPORT char *toString(const volatile QObject *); + #define QTEST_COMPARE_DECL(KLASS)\ template<> Q_TESTLIB_EXPORT char *toString(const KLASS &); #ifndef Q_QDOC