summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@theqtcompany.com>2016-05-19 15:40:55 +0200
committerOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>2016-08-02 07:58:32 +0000
commit61e7ac7ceee19b08dcb44a18bfa9b39a386df799 (patch)
tree3514ead48561ac0f338aedab5a82900c8f8f1397
parent962d1122bbb580cbc0e1a498db535a776c884b11 (diff)
downloadqt-creator-61e7ac7ceee19b08dcb44a18bfa9b39a386df799.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> Reviewed-by: Robert Loehning <robert.loehning@qt.io>
-rw-r--r--src/shared/proparser/qmakebuiltins.cpp11
-rw-r--r--src/shared/proparser/qmakeevaluator.h1
2 files changed, 9 insertions, 3 deletions
diff --git a/src/shared/proparser/qmakebuiltins.cpp b/src/shared/proparser/qmakebuiltins.cpp
index 8a8bc70acd..734ef0165a 100644
--- a/src/shared/proparser/qmakebuiltins.cpp
+++ b/src/shared/proparser/qmakebuiltins.cpp
@@ -390,11 +390,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/shared/proparser/qmakeevaluator.h b/src/shared/proparser/qmakeevaluator.h
index 3f24414f2c..e9cff77c67 100644
--- a/src/shared/proparser/qmakeevaluator.h
+++ b/src/shared/proparser/qmakeevaluator.h
@@ -229,6 +229,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);