From b7f40416692c357b440c885fe18fa70e2a829820 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 16 Nov 2021 14:59:30 +0100 Subject: QAnyStringView: fix broken implicit conversion from QStringBuilder Need to use QConcatenable<>::ConvertTo for SFINAE, the forwarded type alias in QStringBuilder itself doesn't work. [ChangeLog][QtCore][QAnyStringView/QStringBuilder] Implicit conversion from QStringBuilder to QAnyStringView now works as advertised. Pick-to: 6.2 Fixes: QTBUG-98138 Change-Id: I1c300675cf43b13017bc56398ae5d8c1c51e64fe Reviewed-by: Qt CI Bot Reviewed-by: Fabian Kosmale --- .../corelib/text/qanystringview/tst_qanystringview.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'tests/auto/corelib') diff --git a/tests/auto/corelib/text/qanystringview/tst_qanystringview.cpp b/tests/auto/corelib/text/qanystringview/tst_qanystringview.cpp index bbc0bdacfd..e5e3ac9f84 100644 --- a/tests/auto/corelib/text/qanystringview/tst_qanystringview.cpp +++ b/tests/auto/corelib/text/qanystringview/tst_qanystringview.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -230,6 +231,12 @@ static_assert(CanConvert> == CanConvertFromWCharT); static_assert(!CanConvert>); static_assert(!CanConvert>); +// +// QStringBuilder +// + +static_assert(CanConvert>); + class tst_QAnyStringView : public QObject { @@ -303,9 +310,13 @@ private Q_SLOTS: void fromChar16TContainers() const { fromContainers(); } void fromWCharTContainers() const { ONLY_WIN(fromContainers()); } + void fromQStringBuilder_QString_QString() const { fromQStringBuilder(u"1"_qs % u"2"_qs, u"12"); } + void comparison(); private: + template + void fromQStringBuilder(StringBuilder &&sb, QStringView expected) const; template void fromArray() const; template @@ -419,6 +430,13 @@ void tst_QAnyStringView::basics() const QVERIFY(!(sv2 != sv1)); } +template +void tst_QAnyStringView::fromQStringBuilder(StringBuilder &&sb, QStringView expected) const +{ + auto toAnyStringView = [](QAnyStringView sv) { return sv; }; + QCOMPARE(toAnyStringView(std::forward(sb)), expected); +} + template void tst_QAnyStringView::fromArray() const { -- cgit v1.2.3