From 70e92f49c380e2237011f7bf39bfd0c724f0c160 Mon Sep 17 00:00:00 2001 From: Tatiana Borisova Date: Tue, 27 Aug 2024 16:55:22 +0200 Subject: [PATCH] qCompare: fix 'sign-compare' compilation warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - It seems, clang-tidy doesn't detect 'sign-comparison' problems in qtestlib templates. But it is being detected on compilation time. The cmp_<> API can be used for integer types to fix that warnings. The compilation output: /home/qt/work/base/qt5/qtbase/src/testlib/qtestcase.h:626:34: warning: comparison of integer expressions of different signedness: ‘const long long int’ and ‘const long unsigned int’ [-Wsign-compare] return compare_helper(t1 == t2, "Compared values are not the same", Task-number: QTBUG-105464 Change-Id: I00c2632ec1a8c8c2f122e0b6578b16e5b0719a9e Reviewed-by: Edward Welbourne --- src/testlib/qtestcase.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h index b118a2066b9..75a51992d28 100644 --- a/src/testlib/qtestcase.h +++ b/src/testlib/qtestcase.h @@ -15,6 +15,7 @@ #include #include #include +#include #include @@ -623,10 +624,18 @@ namespace QTest using D1 = std::decay_t; using D2 = std::decay_t; using Internal::genericToString; - return compare_helper(t1 == t2, "Compared values are not the same", - std::addressof(t1), std::addressof(t2), - genericToString, genericToString, - actual, expected, file, line); + if constexpr (QtPrivate::is_standard_or_extended_integer_type_v + && QtPrivate::is_standard_or_extended_integer_type_v) { + return compare_helper(q20::cmp_equal(t1, t2), "Compared values are not the same", + std::addressof(t1), std::addressof(t2), + genericToString, genericToString, + actual, expected, file, line); + } else { + return compare_helper(t1 == t2, "Compared values are not the same", + std::addressof(t1), std::addressof(t2), + genericToString, genericToString, + actual, expected, file, line); + } } inline bool qCompare(double const &t1, float const &t2, const char *actual,