forked from qt-creator/qt-creator
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>
This commit is contained in:
committed by
Oswald Buddenhagen
parent
962d1122bb
commit
61e7ac7cee
@@ -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);
|
QJsonParseError error;
|
||||||
if (document.isNull())
|
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;
|
return QMakeEvaluator::ReturnFalse;
|
||||||
|
}
|
||||||
|
|
||||||
QString currentKey = into + QLatin1Char('.');
|
QString currentKey = into + QLatin1Char('.');
|
||||||
|
|
||||||
|
@@ -229,6 +229,7 @@ public:
|
|||||||
|
|
||||||
bool getMemberArgs(const ProKey &name, int srclen, const ProStringList &args,
|
bool getMemberArgs(const ProKey &name, int srclen, const ProStringList &args,
|
||||||
int *start, int *end);
|
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,
|
VisitReturn writeFile(const QString &ctx, const QString &fn, QIODevice::OpenMode mode,
|
||||||
bool exe, const QString &contents);
|
bool exe, const QString &contents);
|
||||||
|
Reference in New Issue
Block a user