Fix source compatibility with existing toString() extensions

Change-Id: I946ebf0f0fa82450105e720489c4da35a77078d8
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit 7dd2c5f91dd62840d37c5e17cc3f1f5ad46d9366)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Allan Sandfeld Jensen 2024-07-15 13:50:09 +02:00 committed by Qt Cherry-pick Bot
parent 1f72315adc
commit 85b7aeaddc
3 changed files with 18 additions and 19 deletions

View File

@ -3144,7 +3144,16 @@ char *QTest::toString(const volatile QObject *vo)
if (vo == nullptr)
return qstrdup("<null>");
auto *o = const_cast<const QObject*>(vo);
return QTest::toString(const_cast<const QObject*>(vo));
}
/*! \internal
*/
char *QTest::toString(const QObject *o)
{
if (o == nullptr)
return qstrdup("<null>");
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
*/

View File

@ -1423,7 +1423,7 @@
*/
/*!
\fn template<typename T, QTest::Internal::is_suitable_type_v<T> = true> char *QTest::toString(const T &value)
\fn template <typename T> 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.

View File

@ -81,19 +81,6 @@ inline typename std::enable_if<!QtPrivate::IsQEnumHelper<F>::Value, char*>::type
return msg;
}
template <typename T>
constexpr bool is_suitable_type_helper_v = std::disjunction_v<std::is_same<T, char>,
std::is_same<T, void>,
std::is_same<T, QObject>
>;
template <typename T>
using is_suitable_type_v =
std::enable_if_t<!(std::is_pointer_v<T>
&& is_suitable_type_helper_v<
std::remove_const_t<std::remove_pointer_t<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<typename T, Internal::is_suitable_type_v<T> = true>
template <typename T>
inline char *toString(const T &t)
{
return Internal::toString(t);
@ -121,6 +105,11 @@ inline char *toString(const std::tuple<Types...> &tuple);
template <typename Rep, typename Period>
inline char *toString(std::chrono::duration<Rep, Period> 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<KLASS >(const KLASS &);
#ifndef Q_QDOC