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 | |
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>
-rw-r--r-- | src/corelib/text/qstring.cpp | 23 | ||||
-rw-r--r-- | src/corelib/text/qstring.h | 3 | ||||
-rw-r--r-- | tests/auto/corelib/text/qstring/tst_qstring.cpp | 14 |
3 files changed, 12 insertions, 28 deletions
diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp index 077097e3fd..c74a9296dc 100644 --- a/src/corelib/text/qstring.cpp +++ b/src/corelib/text/qstring.cpp @@ -5931,22 +5931,6 @@ QString& QString::fill(QChar ch, int size) Appends the string view \a str to this string. */ -/*! \fn QString &QString::operator+=(char ch) - - \overload operator+=() - - Appends the character \a ch to this string. Note that the character is - converted to Unicode using the fromLatin1() function, unlike other 8-bit - functions that operate on UTF-8 data. - - You can disable this function by defining \c QT_NO_CAST_FROM_ASCII - when you compile your applications. This can be useful if you want - to ensure that all user-visible strings go through QObject::tr(), - for example. - - \sa QT_NO_CAST_FROM_ASCII -*/ - /*! \fn QString &QString::operator+=(QChar ch) \overload operator+=() @@ -5954,13 +5938,6 @@ QString& QString::fill(QChar ch, int size) Appends the character \a ch to the string. */ -/*! \fn QString &QString::operator+=(QChar::SpecialCharacter c) - - \overload operator+=() - - \internal -*/ - /*! \fn bool operator==(const char *s1, const QString &s2) diff --git a/src/corelib/text/qstring.h b/src/corelib/text/qstring.h index d12c535539..229dc17a28 100644 --- a/src/corelib/text/qstring.h +++ b/src/corelib/text/qstring.h @@ -570,7 +570,6 @@ public: return *this; } - inline QString &operator+=(QChar::SpecialCharacter c) { return append(QChar(c)); } #if QT_STRINGVIEW_LEVEL < 2 inline QString &operator+=(const QString &s) { return append(s); } inline QString &operator+=(const QStringRef &s) { return append(s); } @@ -859,8 +858,6 @@ public: { return append(QString::fromUtf8(s)); } inline QT_ASCII_CAST_WARN QString &operator+=(const QByteArray &s) { return append(QString::fromUtf8(s)); } - inline QT_ASCII_CAST_WARN QString &operator+=(char c) - { return append(QChar::fromLatin1(c)); } inline QT_ASCII_CAST_WARN bool operator==(const char *s) const; inline QT_ASCII_CAST_WARN bool operator!=(const char *s) const; 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); |