forked from qt-creator/qt-creator
qmljs: improve qmltype parsing error messages
add filename to each error message. Change-Id: I2b9f550147acfe6993f1e7d878fdda863182a2a0 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
This commit is contained in:
@@ -1298,7 +1298,7 @@ void CppQmlTypesLoader::parseQmlTypeDescriptions(const QByteArray &contents,
|
|||||||
|
|
||||||
errorMessage->clear();
|
errorMessage->clear();
|
||||||
warningMessage->clear();
|
warningMessage->clear();
|
||||||
TypeDescriptionReader reader(QString::fromUtf8(contents));
|
TypeDescriptionReader reader(fileName, QString::fromUtf8(contents));
|
||||||
if (!reader(newObjects, newModuleApis)) {
|
if (!reader(newObjects, newModuleApis)) {
|
||||||
if (reader.errorMessage().isEmpty())
|
if (reader.errorMessage().isEmpty())
|
||||||
*errorMessage = QLatin1String("unknown error");
|
*errorMessage = QLatin1String("unknown error");
|
||||||
|
|||||||
@@ -36,13 +36,14 @@
|
|||||||
#include "qmljsinterpreter.h"
|
#include "qmljsinterpreter.h"
|
||||||
#include "qmljsutils.h"
|
#include "qmljsutils.h"
|
||||||
|
|
||||||
|
#include <QDir>
|
||||||
|
|
||||||
using namespace QmlJS;
|
using namespace QmlJS;
|
||||||
using namespace QmlJS::AST;
|
using namespace QmlJS::AST;
|
||||||
using namespace LanguageUtils;
|
using namespace LanguageUtils;
|
||||||
|
|
||||||
TypeDescriptionReader::TypeDescriptionReader(const QString &data)
|
TypeDescriptionReader::TypeDescriptionReader(const QString &fileName, const QString &data)
|
||||||
: _source(data)
|
: _fileName (fileName), _source(data), _objects(0)
|
||||||
, _objects(0)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,7 +163,8 @@ void TypeDescriptionReader::readModule(UiObjectDefinition *ast)
|
|||||||
|
|
||||||
void TypeDescriptionReader::addError(const SourceLocation &loc, const QString &message)
|
void TypeDescriptionReader::addError(const SourceLocation &loc, const QString &message)
|
||||||
{
|
{
|
||||||
_errorMessage += QString::fromLatin1("%1:%2: %3\n").arg(
|
_errorMessage += QString::fromLatin1("%1:%2:%3: %4\n").arg(
|
||||||
|
QDir::toNativeSeparators(_fileName),
|
||||||
QString::number(loc.startLine),
|
QString::number(loc.startLine),
|
||||||
QString::number(loc.startColumn),
|
QString::number(loc.startColumn),
|
||||||
message);
|
message);
|
||||||
@@ -170,7 +172,8 @@ void TypeDescriptionReader::addError(const SourceLocation &loc, const QString &m
|
|||||||
|
|
||||||
void TypeDescriptionReader::addWarning(const SourceLocation &loc, const QString &message)
|
void TypeDescriptionReader::addWarning(const SourceLocation &loc, const QString &message)
|
||||||
{
|
{
|
||||||
_warningMessage += QString::fromLatin1("%1:%2: %3\n").arg(
|
_warningMessage += QString::fromLatin1("%1:%2:%3: %4\n").arg(
|
||||||
|
QDir::toNativeSeparators(_fileName),
|
||||||
QString::number(loc.startLine),
|
QString::number(loc.startLine),
|
||||||
QString::number(loc.startColumn),
|
QString::number(loc.startColumn),
|
||||||
message);
|
message);
|
||||||
@@ -193,7 +196,9 @@ void TypeDescriptionReader::readComponent(UiObjectDefinition *ast)
|
|||||||
else if (name == QLatin1String("Enum"))
|
else if (name == QLatin1String("Enum"))
|
||||||
readEnum(component, fmo);
|
readEnum(component, fmo);
|
||||||
else
|
else
|
||||||
addWarning(component->firstSourceLocation(), tr("Expected only Property, Method, Signal and Enum object definitions."));
|
addWarning(component->firstSourceLocation(),
|
||||||
|
tr("Expected only Property, Method, Signal and Enum object definitions, not '%1'.")
|
||||||
|
.arg(name));
|
||||||
} else if (script) {
|
} else if (script) {
|
||||||
QString name = toString(script->qualifiedId);
|
QString name = toString(script->qualifiedId);
|
||||||
if (name == QLatin1String("name")) {
|
if (name == QLatin1String("name")) {
|
||||||
@@ -211,7 +216,7 @@ void TypeDescriptionReader::readComponent(UiObjectDefinition *ast)
|
|||||||
} else {
|
} else {
|
||||||
addWarning(script->firstSourceLocation(),
|
addWarning(script->firstSourceLocation(),
|
||||||
tr("Expected only name, prototype, defaultProperty, attachedType, exports "
|
tr("Expected only name, prototype, defaultProperty, attachedType, exports "
|
||||||
"and exportMetaObjectRevisions script bindings."));
|
"and exportMetaObjectRevisions script bindings, not '%1'.").arg(name));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
addWarning(member->firstSourceLocation(), tr("Expected only script bindings and object definitions."));
|
addWarning(member->firstSourceLocation(), tr("Expected only script bindings and object definitions."));
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ class QMLJS_EXPORT TypeDescriptionReader
|
|||||||
Q_DECLARE_TR_FUNCTIONS(QmlJS::TypeDescriptionReader)
|
Q_DECLARE_TR_FUNCTIONS(QmlJS::TypeDescriptionReader)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit TypeDescriptionReader(const QString &data);
|
explicit TypeDescriptionReader(const QString &fileName, const QString &data);
|
||||||
~TypeDescriptionReader();
|
~TypeDescriptionReader();
|
||||||
|
|
||||||
bool operator()(
|
bool operator()(
|
||||||
@@ -85,6 +85,7 @@ private:
|
|||||||
void addError(const AST::SourceLocation &loc, const QString &message);
|
void addError(const AST::SourceLocation &loc, const QString &message);
|
||||||
void addWarning(const AST::SourceLocation &loc, const QString &message);
|
void addWarning(const AST::SourceLocation &loc, const QString &message);
|
||||||
|
|
||||||
|
QString _fileName;
|
||||||
QString _source;
|
QString _source;
|
||||||
QString _errorMessage;
|
QString _errorMessage;
|
||||||
QString _warningMessage;
|
QString _warningMessage;
|
||||||
|
|||||||
Reference in New Issue
Block a user