diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2017-11-06 16:16:58 +0100 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2017-11-06 16:41:07 +0000 |
commit | 6a738504d031959fc43d70c197b820c05057ea92 (patch) | |
tree | 42cd697a6dc053b5e698c15d59750f1912fb7dbe /src/libs/qmljs/qmljscheck.cpp | |
parent | 438fe38e1fcd7c7c79282663aa1a8216cabd5a3f (diff) | |
download | qt-creator-6a738504d031959fc43d70c197b820c05057ea92.tar.gz |
QmlJS: Add error message for dynamic property called "data"
The default property of most QtQuick items is data and
therefore "data" should not be used as a property name.
Task-number: QTCREATORBUG-19225
Change-Id: I54d1b72ce984debd4c366b7261e93b7a81b8c940
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
Diffstat (limited to 'src/libs/qmljs/qmljscheck.cpp')
-rw-r--r-- | src/libs/qmljs/qmljscheck.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp index 6bc596eacd..42558f65a4 100644 --- a/src/libs/qmljs/qmljscheck.cpp +++ b/src/libs/qmljs/qmljscheck.cpp @@ -1044,15 +1044,20 @@ bool Check::visit(UiPublicMember *ast) { if (ast->type == UiPublicMember::Property) { if (ast->isValid()) { - const QStringRef name = ast->memberTypeName(); - if (!name.isEmpty() && name.at(0).isLower()) { - const QString nameS = name.toString(); - if (!isValidBuiltinPropertyType(nameS)) - addMessage(ErrInvalidPropertyType, ast->typeToken, nameS); + const QStringRef typeName = ast->memberTypeName(); + if (!typeName.isEmpty() && typeName.at(0).isLower()) { + const QString typeNameS = typeName.toString(); + if (!isValidBuiltinPropertyType(typeNameS)) + addMessage(ErrInvalidPropertyType, ast->typeToken, typeNameS); } + const QStringRef name = ast->name; + + if (name == "data") + addMessage(ErrInvalidPropertyName, ast->identifierToken, name.toString()); + // warn about dubious use of var/variant - if (name == QLatin1String("variant") || name == QLatin1String("var")) { + if (typeName == QLatin1String("variant") || typeName == QLatin1String("var")) { Evaluate evaluator(&_scopeChain); const Value *init = evaluator(ast->statement); QString preferredType; |