diff options
author | Thomas Hartmann <Thomas.Hartmann@digia.com> | 2014-09-10 09:49:51 +0200 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@digia.com> | 2014-09-10 15:03:22 +0200 |
commit | 95182687f847e1c758dde12532deba506d03c9ab (patch) | |
tree | 367dcfda974c59f4ca3ca01bf592dcc116b4c5a2 /src/libs/qmljs/qmljscheck.cpp | |
parent | 5f0da502a42903cfb581caa133beb9597d20c320 (diff) | |
download | qt-creator-95182687f847e1c758dde12532deba506d03c9ab.tar.gz |
QmlJS: Add error message for invalid root item in the designer
Documents with those types do crash the qmlpuppet and confuse the users.
With this patch we give a clear error message and such files are not supported
anymore.
Change-Id: Iba19def2751d4dc81d90684c0c63c0274fdf49cf
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Diffstat (limited to 'src/libs/qmljs/qmljscheck.cpp')
-rw-r--r-- | src/libs/qmljs/qmljscheck.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp index 3584c9a851..403355426f 100644 --- a/src/libs/qmljs/qmljscheck.cpp +++ b/src/libs/qmljs/qmljscheck.cpp @@ -525,10 +525,24 @@ public: } }; + +class UnsupportedRootObjectTypesByVisualDesigner : public QStringList +{ +public: + UnsupportedRootObjectTypesByVisualDesigner() + { + (*this) << QLatin1String("QtObject") << QLatin1String("ListModel") + << QLatin1String("Component") << QLatin1String("Timer") + << QLatin1String("Package"); + } + +}; + } // end of anonymous namespace Q_GLOBAL_STATIC(VisualAspectsPropertyBlackList, visualAspectsPropertyBlackList) Q_GLOBAL_STATIC(UnsupportedTypesByVisualDesigner, unsupportedTypesByVisualDesigner) +Q_GLOBAL_STATIC(UnsupportedRootObjectTypesByVisualDesigner, unsupportedRootObjectTypesByVisualDesigner) Check::Check(Document::Ptr doc, const ContextPtr &context) : _doc(doc) @@ -559,6 +573,7 @@ Check::Check(Document::Ptr doc, const ContextPtr &context) disableMessage(WarnReferenceToParentItemNotSupportedByVisualDesigner); disableMessage(WarnUndefinedValueForVisualDesigner); disableMessage(WarnStatesOnlyInRootItemForVisualDesigner); + disableMessage(ErrUnsupportedRootTypeInVisualDesigner); } Check::~Check() @@ -729,6 +744,13 @@ void Check::visitQmlObject(Node *ast, UiQualifiedId *typeId, if (m_typeStack.count() > 1 && getRightMostIdentifier(typeId)->name.toString() == QLatin1String("State")) addMessage(WarnStatesOnlyInRootItemForVisualDesigner, typeErrorLocation); + const QString typeName = getRightMostIdentifier(typeId)->name.toString(); + + if (m_typeStack.isEmpty() + && unsupportedRootObjectTypesByVisualDesigner()->contains(typeName)) + addMessage(ErrUnsupportedRootTypeInVisualDesigner, + locationFromRange(ast->firstSourceLocation(), ast->lastSourceLocation()), typeName); + bool typeError = false; if (_importsOk) { const ObjectValue *prototype = _context->lookupType(_doc.data(), typeId); |