diff options
author | Thiago Macieira <[email protected]> | 2023-02-06 17:07:41 -0800 |
---|---|---|
committer | Qt Cherry-pick Bot <[email protected]> | 2023-02-08 03:47:50 +0000 |
commit | 310f6666150f18d40630b54cf5c9424e4cfb5567 (patch) | |
tree | e829c225b7c574073283e6a772af4a4eac338052 | |
parent | 87370869563553ad9d33387d15af92b7758573d5 (diff) |
qdbusxml2cpp: invert Q_DECL_DEPRECATED and inline in the output
Commit 93dad2bf91d414a41c6e2c7db6c75171b4917d4d (6.0) changed
Q_DECL_DEPRECATED to use the [[deprecated]] attribute, which must appear
before inline and other keywords.
To keep it next to Q_NOREPLY, I also moved the "inline" into the next
string.
Added missing tests for both.
Fixes: QTBUG-110979
Change-Id: I9671dee8ceb64aa9b9cafffd1741656e86f40453
Reviewed-by: David Faure <[email protected]>
(cherry picked from commit f67b32e735cbbed6848b5d40a61329f71f54a14d)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
-rw-r--r-- | src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp | 12 | ||||
-rw-r--r-- | tests/auto/tools/qdbusxml2cpp/tst_qdbusxml2cpp.cpp | 49 |
2 files changed, 56 insertions, 5 deletions
diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp index 0bfaf6eb1eb..873c133232d 100644 --- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp +++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp @@ -606,13 +606,15 @@ static void writeProxy(const QString &filename, const QDBusIntrospection::Interf continue; } - hs << " inline " - << (isDeprecated ? "Q_DECL_DEPRECATED " : ""); + if (isDeprecated) + hs << " Q_DECL_DEPRECATED "; + else + hs << " "; if (isNoReply) { - hs << "Q_NOREPLY void "; + hs << "Q_NOREPLY inline void "; } else { - hs << "QDBusPendingReply<"; + hs << "inline QDBusPendingReply<"; for (qsizetype i = 0; i < method.outputArgs.size(); ++i) hs << (i > 0 ? ", " : "") << templateArg(qtTypeName(method.outputArgs.at(i).name, method.outputArgs.at(i).type, @@ -648,7 +650,7 @@ static void writeProxy(const QString &filename, const QDBusIntrospection::Interf if (method.outputArgs.size() > 1) { // generate the old-form QDBusReply methods with multiple incoming parameters - hs << " inline " << (isDeprecated ? "Q_DECL_DEPRECATED " : "") << "QDBusReply<" + hs << (isDeprecated ? " Q_DECL_DEPRECATED " : " ") << "inline QDBusReply<" << templateArg(qtTypeName(method.outputArgs.first().name, method.outputArgs.first().type, method.annotations, 0, "Out")) << "> "; diff --git a/tests/auto/tools/qdbusxml2cpp/tst_qdbusxml2cpp.cpp b/tests/auto/tools/qdbusxml2cpp/tst_qdbusxml2cpp.cpp index f75790da6e9..1dde91311a6 100644 --- a/tests/auto/tools/qdbusxml2cpp/tst_qdbusxml2cpp.cpp +++ b/tests/auto/tools/qdbusxml2cpp/tst_qdbusxml2cpp.cpp @@ -240,6 +240,46 @@ void tst_qdbusxml2cpp::process_data() << QRegularExpression("Q_SLOTS:.*QString Method\\(const QString &\\w*, const QString &\\w*, QString &", QRegularExpression::DotMatchesEverythingOption); + QTest::newRow("method-deprecated-0out") + << "<method name=\"Method\">" + "<annotation name=\"org.freedesktop.DBus.Deprecated\" value=\"true\"/>" + "</method>" + << QRegularExpression("Q_SLOTS:.*Q_DECL_DEPRECATED inline QDBusPendingReply<> Method\\(\\)", + QRegularExpression::DotMatchesEverythingOption) + << QRegularExpression("Q_SLOTS:.*void Method\\(\\)", + QRegularExpression::DotMatchesEverythingOption); + + QTest::newRow("method-deprecated-2out") + << "<method name=\"Method\">" + "<annotation name=\"org.freedesktop.DBus.Deprecated\" value=\"true\"/>" + "<arg type=\"s\" direction=\"out\"/>" + "<arg type=\"s\" direction=\"out\"/>" + "</method>" + << QRegularExpression("Q_SLOTS:.*Q_DECL_DEPRECATED inline QDBusPendingReply<QString, QString> Method\\(\\)" + ".*Q_DECL_DEPRECATED inline QDBusReply<QString> Method\\(QString &\\w*\\)", + QRegularExpression::DotMatchesEverythingOption) + << QRegularExpression("Q_SLOTS:.*QString Method\\(QString &", + QRegularExpression::DotMatchesEverythingOption); + + QTest::newRow("method-noreply") + << "<method name=\"Method\">" + "<annotation name=\"org.freedesktop.DBus.Method.NoReply\" value=\"true\"/>" + "</method>" + << QRegularExpression("Q_SLOTS:.*Q_NOREPLY inline void Method\\(\\).*\\bQDBus::NoBlock\\b", + QRegularExpression::DotMatchesEverythingOption) + << QRegularExpression("Q_SLOTS:.*Q_NOREPLY void Method\\(", + QRegularExpression::DotMatchesEverythingOption); + + QTest::newRow("method-deprecated-noreply") + << "<method name=\"Method\">" + "<annotation name=\"org.freedesktop.DBus.Method.NoReply\" value=\"true\"/>" + "<annotation name=\"org.freedesktop.DBus.Deprecated\" value=\"true\"/>" + "</method>" + << QRegularExpression("Q_SLOTS:.*Q_DECL_DEPRECATED Q_NOREPLY inline void Method\\(\\).*\\bQDBus::NoBlock\\b", + QRegularExpression::DotMatchesEverythingOption) + << QRegularExpression("Q_SLOTS:.*Q_NOREPLY void Method\\(", + QRegularExpression::DotMatchesEverythingOption); + // -- signals -- for (int i = 0; i < basicTypeCount; ++i) { QRegularExpression rx(QString("Q_SIGNALS:.*\\bvoid Signal\\((const )?%1\\b") @@ -261,6 +301,15 @@ void tst_qdbusxml2cpp::process_data() <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QVariantMap"/>" </signal>)" << rx << rx; + + QTest::newRow("signal-deprecated") + << R"(<signal name="Signal"> + <annotation name="org.freedesktop.DBus.Deprecated" value="true"/> + </signal>)" + << QRegularExpression(R"(Q_SIGNALS:.*\bQ_DECL_DEPRECATED void Signal\(\))", + QRegularExpression::DotMatchesEverythingOption) + << QRegularExpression(R"(Q_SIGNALS:.*\bvoid Signal\(\))", + QRegularExpression::DotMatchesEverythingOption); } void tst_qdbusxml2cpp::process() |