diff options
author | Lars Knoll <lars.knoll@theqtcompany.com> | 2016-05-19 15:40:55 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2016-10-10 09:56:58 +0000 |
commit | b8c702a25f30e0358602a96cc650ef12c9bddcc8 (patch) | |
tree | 376c87decee62f51ac9f48d0a733df67bdd9ee75 | |
parent | 293028d03d45b1bf3ac74d41a8002f84a071fd86 (diff) | |
download | qttools-b8c702a25f30e0358602a96cc650ef12c9bddcc8.tar.gz |
Improve error reporting when parsing JSON files
At least report the error string and the file offset where
the error happened.
Change-Id: Iaa1733593b8af2a7a52b67c0f495731f045d2c11
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
(cherry picked from qtbase/34c24ceb1ffce964c9f139d84b6b271bd2e45c33)
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
-rw-r--r-- | src/linguist/shared/qmakebuiltins.cpp | 11 | ||||
-rw-r--r-- | src/linguist/shared/qmakeevaluator.h | 1 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/linguist/shared/qmakebuiltins.cpp b/src/linguist/shared/qmakebuiltins.cpp index e88ff748e..d7267efb6 100644 --- a/src/linguist/shared/qmakebuiltins.cpp +++ b/src/linguist/shared/qmakebuiltins.cpp @@ -393,11 +393,16 @@ static void addJsonValue(const QJsonValue &value, const QString &keyPrefix, ProV } } -static QMakeEvaluator::VisitReturn parseJsonInto(const QByteArray &json, const QString &into, ProValueMap *value) +QMakeEvaluator::VisitReturn QMakeEvaluator::parseJsonInto(const QByteArray &json, const QString &into, ProValueMap *value) { - QJsonDocument document = QJsonDocument::fromJson(json); - if (document.isNull()) + QJsonParseError error; + QJsonDocument document = QJsonDocument::fromJson(json, &error); + if (document.isNull()) { + if (error.error != QJsonParseError::NoError) + evalError(fL1S("Error parsing json at offset %1: %2") + .arg(error.offset).arg(error.errorString())); return QMakeEvaluator::ReturnFalse; + } QString currentKey = into + QLatin1Char('.'); diff --git a/src/linguist/shared/qmakeevaluator.h b/src/linguist/shared/qmakeevaluator.h index 885e515ae..8b418de72 100644 --- a/src/linguist/shared/qmakeevaluator.h +++ b/src/linguist/shared/qmakeevaluator.h @@ -233,6 +233,7 @@ public: bool getMemberArgs(const ProKey &name, int srclen, const ProStringList &args, int *start, int *end); + VisitReturn parseJsonInto(const QByteArray &json, const QString &into, ProValueMap *value); VisitReturn writeFile(const QString &ctx, const QString &fn, QIODevice::OpenMode mode, bool exe, const QString &contents); |