summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2021-11-16 14:59:30 +0100
committerMarc Mutz <marc.mutz@qt.io>2021-11-19 03:32:20 +0100
commitb7f40416692c357b440c885fe18fa70e2a829820 (patch)
treef97d1c7c0eed62f36b6f310395774b6c40203422 /tests/auto/corelib
parent8283df4d8cee7e80ce36e724ae0824fd1e00cb24 (diff)
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 <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r--tests/auto/corelib/text/qanystringview/tst_qanystringview.cpp18
1 files changed, 18 insertions, 0 deletions
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 <QChar>
#include <QList>
#include <QString>
+#include <QStringBuilder>
#include <QVarLengthArray>
#include <QTest>
@@ -230,6 +231,12 @@ static_assert(CanConvert<std::array<wchar_t, 123>> == CanConvertFromWCharT);
static_assert(!CanConvert<std::deque<wchar_t>>);
static_assert(!CanConvert<std::list<wchar_t>>);
+//
+// QStringBuilder
+//
+
+static_assert(CanConvert<QStringBuilder<QString, QString>>);
+
class tst_QAnyStringView : public QObject
{
@@ -303,9 +310,13 @@ private Q_SLOTS:
void fromChar16TContainers() const { fromContainers<char16_t>(); }
void fromWCharTContainers() const { ONLY_WIN(fromContainers<wchar_t>()); }
+ void fromQStringBuilder_QString_QString() const { fromQStringBuilder(u"1"_qs % u"2"_qs, u"12"); }
+
void comparison();
private:
+ template <typename StringBuilder>
+ void fromQStringBuilder(StringBuilder &&sb, QStringView expected) const;
template <typename Char>
void fromArray() const;
template <typename String>
@@ -419,6 +430,13 @@ void tst_QAnyStringView::basics() const
QVERIFY(!(sv2 != sv1));
}
+template <typename StringBuilder>
+void tst_QAnyStringView::fromQStringBuilder(StringBuilder &&sb, QStringView expected) const
+{
+ auto toAnyStringView = [](QAnyStringView sv) { return sv; };
+ QCOMPARE(toAnyStringView(std::forward<StringBuilder>(sb)), expected);
+}
+
template <typename Char>
void tst_QAnyStringView::fromArray() const
{