From a6bd11531309ad8c2773800fec5f5c67d8513ba8 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 3 Mar 2022 09:27:59 +0100 Subject: tst_qstringapisymmetry: check QString/QAnyStringView overloads w/Q_WEAK_OVERLOAD flipped MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This overload set may come in handy to cushion some of the concerns regarding replacing QString functions with QAnyStringView ones. Overloading with a Q_WEAK_OVERLOAD QAnyStringView function requires users to jump through hoops in order to avoid the QString overload, but with the Q_WEAK_OVERLOAD roles reversed, the QAnyStringView overload becomes the preferred version, relegating the QString overload to a fall-back to facilitate sharing where it makes sense (e.g. for QObject::setObjectName()). Change-Id: Ic65ead505beee627976a306e2d430e800540a600 Reviewed-by: Qt CI Bot Reviewed-by: MÃ¥rten Nordheim Reviewed-by: Sona Kurazyan (cherry picked from commit 1931689c7df579375b904a71c6f9e0844492cbe2) Reviewed-by: Qt Cherry-pick Bot --- .../qstringapisymmetry/tst_qstringapisymmetry.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/auto/corelib/text/qstringapisymmetry/tst_qstringapisymmetry.cpp b/tests/auto/corelib/text/qstringapisymmetry/tst_qstringapisymmetry.cpp index 53861aab8f..ccb5e70e6f 100644 --- a/tests/auto/corelib/text/qstringapisymmetry/tst_qstringapisymmetry.cpp +++ b/tests/auto/corelib/text/qstringapisymmetry/tst_qstringapisymmetry.cpp @@ -932,6 +932,14 @@ void overload_sr_a(QString &&) {} Q_WEAK_OVERLOAD void overload_sr_a(QAnyStringView) {} +Q_WEAK_OVERLOAD +void overload_a_s(const QString &) {} +void overload_a_s(QAnyStringView) {} + +Q_WEAK_OVERLOAD +void overload_a_sr(QString &&) {} +void overload_a_sr(QAnyStringView) {} + void overload_s_v(const QString &) {} void overload_s_v(QStringView) {} @@ -967,6 +975,20 @@ void tst_QStringApiSymmetry::overload() overload_sr_a(CT()); } + overload_a_s(t); + overload_a_s(ct); + if constexpr (!std::is_array_v) { + overload_a_s(T()); + overload_a_s(CT()); + } + + overload_a_sr(t); + overload_a_sr(ct); + if constexpr (!std::is_array_v) { + overload_a_sr(T()); + overload_a_sr(CT()); + } + if constexpr (std::is_convertible_v || std::is_convertible_v) { overload_s_v(t); overload_s_v(ct); -- cgit v1.2.3