diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2020-05-12 15:07:16 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2020-05-13 14:38:48 +0200 |
commit | 90f864a4c57c40e043978b61d85732b88dc00cc4 (patch) | |
tree | 87be890d7ce5b4c4670872c9fc90987f4abb56b5 /tests/auto/corelib/text/qstring | |
parent | 082eebe6a47c910593f87798bf688149e6ca5534 (diff) |
QString: remove op+=(char) and op+=(QChar::SpecialCharacter)
The former messes in bad ways with the overload set (it, fatally,
attracts char16_t, e.g.). The latter was probably added in response to
ambiguities between (char) and (QChar). While it's harmless now,
remove it, since it no longer pulls its weight.
The no-ascii warning is now coming from QChar(char), so the protection
isn't lost.
[ChangeLog][QtCore][QString] The += operators taking char and
QChar::SpecialCharacter have been removed as they cause adding a
char16_t to QString to call the char overload, losing information. The
append() function was not affected.
Change-Id: I57116314bcc71c0d9476159513c0c10048239db3
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'tests/auto/corelib/text/qstring')
-rw-r--r-- | tests/auto/corelib/text/qstring/tst_qstring.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/tests/auto/corelib/text/qstring/tst_qstring.cpp b/tests/auto/corelib/text/qstring/tst_qstring.cpp index e9bdbb41aa..4fcbc0b87e 100644 --- a/tests/auto/corelib/text/qstring/tst_qstring.cpp +++ b/tests/auto/corelib/text/qstring/tst_qstring.cpp @@ -447,10 +447,9 @@ private slots: void operator_pluseq_qchar_data() { operator_pluseq_data(true); } void operator_pluseq_qbytearray() { operator_pluseq_impl<QByteArray>(); } void operator_pluseq_qbytearray_data() { operator_pluseq_data(); } - void operator_pluseq_char() { operator_pluseq_impl<char, QString &(QString::*)(char)>(); } - void operator_pluseq_char_data() { operator_pluseq_data(true); } void operator_pluseq_charstar() { operator_pluseq_impl<const char *, QString &(QString::*)(const char *)>(); } void operator_pluseq_charstar_data() { operator_pluseq_data(); } + void operator_pluseq_special_cases(); void operator_pluseq_bytearray_special_cases_data(); void operator_pluseq_bytearray_special_cases(); @@ -2703,6 +2702,17 @@ void tst_QString::append_bytearray_special_cases() } } +void tst_QString::operator_pluseq_special_cases() +{ + { + QString a; + a += QChar::CarriageReturn; + a += '\r'; + a += u'\x1111'; + QCOMPARE(a, QStringView(u"\r\r\x1111")); + } +} + void tst_QString::operator_pluseq_data(bool emptyIsNoop) { append_data(emptyIsNoop); |