diff options
author | David Faure <faure@kde.org> | 2013-05-04 13:03:45 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-07-01 17:04:23 +0200 |
commit | b2f9839457a7c09c2898befe431443aaeb607edb (patch) | |
tree | 7d8532546d5b5451131200664ee5f215d8da036b /src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp | |
parent | 170469ef84fd7ce7805ff174aed5b3447fa8e7a2 (diff) |
QDBus: improve error handling, to give the developer feedback.
For instance, exporting an object with a slot like
QString complexMethod(const MyVariantMap& vars);
(even with a simple typedef QVariantMap MyVariantMap)
used to silently skip that method in the introspection.
Now it outputs:
generateInterfaceXml: Skipped method "complexMethod" : Invalid type in parameter list: MyVariantMap
Change-Id: I7964cfb63e973257ce1abe47b9625e361b2ad23f
Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp')
-rw-r--r-- | src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp b/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp index a66757907d..0e1fa59b90 100644 --- a/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp +++ b/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp @@ -47,6 +47,7 @@ #include <qbuffer.h> #include <qregexp.h> #include <qvector.h> +#include <qdebug.h> #include <stdio.h> #include <stdlib.h> @@ -95,14 +96,14 @@ static const char help[] = "\n"; -int qDBusParametersForMethod(const FunctionDef &mm, QVector<int>& metaTypes) +int qDBusParametersForMethod(const FunctionDef &mm, QVector<int>& metaTypes, QString &errorMsg) { QList<QByteArray> parameterTypes; foreach (const ArgumentDef &arg, mm.arguments) parameterTypes.append(arg.normalizedType); - return qDBusParametersForMethod(parameterTypes, metaTypes); + return qDBusParametersForMethod(parameterTypes, metaTypes, errorMsg); } @@ -140,9 +141,12 @@ static QString addFunction(const FunctionDef &mm, bool isSignal = false) { } QList<ArgumentDef> names = mm.arguments; QVector<int> types; - int inputCount = qDBusParametersForMethod(mm, types); - if (inputCount == -1) + QString errorMsg; + int inputCount = qDBusParametersForMethod(mm, types, errorMsg); + if (inputCount == -1) { + qWarning() << qPrintable(errorMsg); return QString(); // invalid form + } if (isSignal && inputCount + 1 != types.count()) return QString(); // signal with output arguments? if (isSignal && types.at(inputCount) == QDBusMetaTypeId::message()) |