diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2019-07-26 22:43:05 +0300 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2019-08-10 22:13:49 +0200 |
commit | c58ca4256d881ffed865602fd3da8efb6ebc9d5f (patch) | |
tree | 2619858d2e21ebee531d8c9e2a7af39e23683fca | |
parent | b7d073e9905bf9812ba96cecdcf6871a95517d30 (diff) |
Deprecate QStringViewLiteral
As a macro, we can't directly deprecate it, but need to make it call
something deprecated. That is a new ctor with a new enum type
added. The type might be useful for other such ventures, so put it
into qglobal.h
Remove the QT_NO_UNICODE_LITERAL protection, as it's always false
these days, and QT_UNICODE_LITERAL is unconditionally #defined a 20
lines above.
[ChangeLog][QtCore][QStringView] Deprecated the (undocumented)
QStringViewLiteral macro. Just use u"" or QStringView(u"") instead.
Change-Id: I9141320225037e1bc6b7f920bf01a9d0144fdac2
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
-rw-r--r-- | examples/widgets/tools/codecs/encodingdialog.cpp | 2 | ||||
-rw-r--r-- | src/corelib/global/qglobal.h | 8 | ||||
-rw-r--r-- | src/corelib/text/qstringliteral.h | 7 | ||||
-rw-r--r-- | src/corelib/text/qstringview.h | 7 | ||||
-rw-r--r-- | tests/auto/corelib/text/qlatin1string/tst_qlatin1string.cpp | 8 | ||||
-rw-r--r-- | tests/auto/corelib/text/qstringview/tst_qstringview.cpp | 12 |
6 files changed, 28 insertions, 16 deletions
diff --git a/examples/widgets/tools/codecs/encodingdialog.cpp b/examples/widgets/tools/codecs/encodingdialog.cpp index ca4b56db9e..aa57d47dc7 100644 --- a/examples/widgets/tools/codecs/encodingdialog.cpp +++ b/examples/widgets/tools/codecs/encodingdialog.cpp @@ -248,7 +248,7 @@ static const char *encodingToolTips[] { QT_TRANSLATE_NOOP("EncodingDialog", "Unicode points for use with any encoding (C++, Python)"), QT_TRANSLATE_NOOP("EncodingDialog", "QString::fromUtf8()"), - QT_TRANSLATE_NOOP("EncodingDialog", "QStringViewLiteral(), wchar_t on Windows"), + QT_TRANSLATE_NOOP("EncodingDialog", "wchar_t on Windows, char16_t everywhere"), QT_TRANSLATE_NOOP("EncodingDialog", "wchar_t on Unix (Ucs4)"), QT_TRANSLATE_NOOP("EncodingDialog", "QLatin1String") }; diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 77ca63803f..303b240a54 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -382,6 +382,14 @@ typedef double qreal; #define QT_DEPRECATED_VERSION_5(minor) QT_DEPRECATED_VERSION_5_##minor #define QT_DEPRECATED_VERSION(major, minor) QT_DEPRECATED_VERSION_##major(minor) +#ifdef __cplusplus +// A tag to help mark stuff deprecated (cf. QStringViewLiteral) +namespace QtPrivate { +enum class Deprecated_t {}; +constexpr Q_DECL_UNUSED Deprecated_t Deprecated = {}; +} +#endif + /* The Qt modules' export macros. The options are: diff --git a/src/corelib/text/qstringliteral.h b/src/corelib/text/qstringliteral.h index 603f19c0b4..2a7e607c63 100644 --- a/src/corelib/text/qstringliteral.h +++ b/src/corelib/text/qstringliteral.h @@ -82,11 +82,8 @@ Q_STATIC_ASSERT_X(sizeof(qunicodechar) == 2, Q_STATIC_STRING_DATA_HEADER_INITIALIZER_WITH_OFFSET(size, sizeof(QStringData)) \ /**/ -#ifndef QT_NO_UNICODE_LITERAL -# ifndef QT_UNICODE_LITERAL -# error "If you change QStringLiteral, please change QStringViewLiteral, too" -# endif -# define QStringViewLiteral(str) QStringView(QT_UNICODE_LITERAL(str)) +#if QT_DEPRECATED_SINCE(5, 14) +# define QStringViewLiteral(str) QStringView(QT_UNICODE_LITERAL(str), QtPrivate::Deprecated) #endif template <int N> diff --git a/src/corelib/text/qstringview.h b/src/corelib/text/qstringview.h index 0a82ac4201..4ab4d2570f 100644 --- a/src/corelib/text/qstringview.h +++ b/src/corelib/text/qstringview.h @@ -185,6 +185,13 @@ public: template <typename Char> Q_DECL_CONSTEXPR QStringView(const Char *str) noexcept; #else +#if QT_DEPRECATED_SINCE(5, 14) + template <typename Array, if_compatible_array<Array> = true> + QT_DEPRECATED_VERSION_X_5_14(R"(Use u"~~~" or QStringView(u"~~~") instead of QStringViewLiteral("~~~"))") + Q_DECL_CONSTEXPR QStringView(const Array &str, QtPrivate::Deprecated_t) noexcept + : QStringView(str, lengthHelperArray(str)) {} +#endif // QT_DEPRECATED_SINCE + template <typename Array, if_compatible_array<Array> = true> Q_DECL_CONSTEXPR QStringView(const Array &str) noexcept : QStringView(str, lengthHelperArray(str)) {} diff --git a/tests/auto/corelib/text/qlatin1string/tst_qlatin1string.cpp b/tests/auto/corelib/text/qlatin1string/tst_qlatin1string.cpp index cf46159251..0427c81b85 100644 --- a/tests/auto/corelib/text/qlatin1string/tst_qlatin1string.cpp +++ b/tests/auto/corelib/text/qlatin1string/tst_qlatin1string.cpp @@ -70,7 +70,7 @@ void tst_QLatin1String::arg() const do { \ auto p = QLatin1String(pattern); \ QCOMPARE(p.arg(QLatin1String(arg1)), expected); \ - QCOMPARE(p.arg(QStringViewLiteral(arg1)), expected); \ + QCOMPARE(p.arg(u"" arg1), expected); \ QCOMPARE(p.arg(QStringLiteral(arg1)), expected); \ QCOMPARE(p.arg(QString(QLatin1String(arg1))), expected); \ } while (false) \ @@ -79,9 +79,9 @@ void tst_QLatin1String::arg() const do { \ auto p = QLatin1String(pattern); \ QCOMPARE(p.arg(QLatin1String(arg1), QLatin1String(arg2)), expected); \ - QCOMPARE(p.arg(QStringViewLiteral(arg1), QLatin1String(arg2)), expected); \ - QCOMPARE(p.arg(QLatin1String(arg1), QStringViewLiteral(arg2)), expected); \ - QCOMPARE(p.arg(QStringViewLiteral(arg1), QStringViewLiteral(arg2)), expected); \ + QCOMPARE(p.arg(u"" arg1, QLatin1String(arg2)), expected); \ + QCOMPARE(p.arg(QLatin1String(arg1), u"" arg2), expected); \ + QCOMPARE(p.arg(u"" arg1, u"" arg2), expected); \ } while (false) \ /*end*/ diff --git a/tests/auto/corelib/text/qstringview/tst_qstringview.cpp b/tests/auto/corelib/text/qstringview/tst_qstringview.cpp index 5d95f43d6a..47ce9a6f63 100644 --- a/tests/auto/corelib/text/qstringview/tst_qstringview.cpp +++ b/tests/auto/corelib/text/qstringview/tst_qstringview.cpp @@ -431,20 +431,20 @@ void tst_QStringView::arg() const { #define CHECK1(pattern, arg1, expected) \ do { \ - auto p = QStringViewLiteral(pattern); \ + auto p = QStringView(u"" pattern); \ QCOMPARE(p.arg(QLatin1String(arg1)), expected); \ - QCOMPARE(p.arg(QStringViewLiteral(arg1)), expected); \ + QCOMPARE(p.arg(u"" arg1), expected); \ QCOMPARE(p.arg(QStringLiteral(arg1)), expected); \ QCOMPARE(p.arg(QString(QLatin1String(arg1))), expected); \ } while (false) \ /*end*/ #define CHECK2(pattern, arg1, arg2, expected) \ do { \ - auto p = QStringViewLiteral(pattern); \ + auto p = QStringView(u"" pattern); \ QCOMPARE(p.arg(QLatin1String(arg1), QLatin1String(arg2)), expected); \ - QCOMPARE(p.arg(QStringViewLiteral(arg1), QLatin1String(arg2)), expected); \ - QCOMPARE(p.arg(QLatin1String(arg1), QStringViewLiteral(arg2)), expected); \ - QCOMPARE(p.arg(QStringViewLiteral(arg1), QStringViewLiteral(arg2)), expected); \ + QCOMPARE(p.arg(u"" arg1, QLatin1String(arg2)), expected); \ + QCOMPARE(p.arg(QLatin1String(arg1), u"" arg2), expected); \ + QCOMPARE(p.arg(u"" arg1, u"" arg2), expected); \ } while (false) \ /*end*/ |