From 67990c16a6b631c1d809d1ad656fc941293b3f83 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 9 Dec 2024 11:12:16 +0100 Subject: [PATCH] tst_QStringView: verify that char16_t[] args aren't ambiguous for QS/QSV overloads They are not. Pick-to: 6.9 6.8 Task-number: QTBUG-112746 Change-Id: I2a20d68543f5914690acbcb4f214b1d98681de6a Reviewed-by: Ivan Solovev Reviewed-by: Ahmad Samir --- .../corelib/text/qstringview/tst_qstringview.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/auto/corelib/text/qstringview/tst_qstringview.cpp b/tests/auto/corelib/text/qstringview/tst_qstringview.cpp index 208ae99ca3c..237abcc498d 100644 --- a/tests/auto/corelib/text/qstringview/tst_qstringview.cpp +++ b/tests/auto/corelib/text/qstringview/tst_qstringview.cpp @@ -897,6 +897,11 @@ static void test(QString) = delete; static void test(QStringView) {} } +extern const QChar qcharArrayOfUnknownSize[]; +extern const char16_t char16ArrayOfUnknownSize[]; +[[maybe_unused]] +extern const wchar_t wchartArrayOfUnknownSize[]; + // Compile-time only test: overload resolution prefers QStringView over QString void tst_QStringView::overloadResolution() { @@ -905,6 +910,7 @@ void tst_QStringView::overloadResolution() QStringViewOverloadResolution::test(qcharArray); QChar *qcharPointer = qcharArray; QStringViewOverloadResolution::test(qcharPointer); + QStringViewOverloadResolution::test(qcharArrayOfUnknownSize); } { @@ -919,6 +925,7 @@ void tst_QStringView::overloadResolution() wchar_t wchartArray[42] = {}; QStringViewOverloadResolution::test(wchartArray); QStringViewOverloadResolution::test(L"test"); + QStringViewOverloadResolution::test(wchartArrayOfUnknownSize); } #endif @@ -927,6 +934,7 @@ void tst_QStringView::overloadResolution() QStringViewOverloadResolution::test(char16Array); char16_t *char16Pointer = char16Array; QStringViewOverloadResolution::test(char16Pointer); + QStringViewOverloadResolution::test(char16ArrayOfUnknownSize); } { @@ -937,6 +945,10 @@ void tst_QStringView::overloadResolution() } } +const QChar qcharArrayOfUnknownSize[] = {u'a', u'b', u'c', u'\0', u'd', u'e', u'f'}; +const char16_t char16ArrayOfUnknownSize[] = u"abc\0def"; +const wchar_t wchartArrayOfUnknownSize[] = L"abc\0def"; + void tst_QStringView::std_stringview_conversion() { static_assert(std::is_convertible_v);