summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2019-07-26 22:43:05 +0300
committerMarc Mutz <marc.mutz@kdab.com>2019-08-10 22:13:49 +0200
commitc58ca4256d881ffed865602fd3da8efb6ebc9d5f (patch)
tree2619858d2e21ebee531d8c9e2a7af39e23683fca
parentb7d073e9905bf9812ba96cecdcf6871a95517d30 (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.cpp2
-rw-r--r--src/corelib/global/qglobal.h8
-rw-r--r--src/corelib/text/qstringliteral.h7
-rw-r--r--src/corelib/text/qstringview.h7
-rw-r--r--tests/auto/corelib/text/qlatin1string/tst_qlatin1string.cpp8
-rw-r--r--tests/auto/corelib/text/qstringview/tst_qstringview.cpp12
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*/