From 99aaf86a33ce08536b1a0f34940687c589026b6f Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 26 Oct 2016 14:15:02 +0200 Subject: QmlJSCheck: Add error for ambiguous ids Certain ids can be ambiguous and have name clashes with properties. Those ids are not supported in the designer. Change-Id: Ida293d24611c467df6ef813a541e8abfc06b51cb Reviewed-by: Tim Jenssen --- src/libs/qmljs/qmljscheck.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src/libs/qmljs/qmljscheck.cpp') diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp index 9610a95f72..c9c136d178 100644 --- a/src/libs/qmljs/qmljscheck.cpp +++ b/src/libs/qmljs/qmljscheck.cpp @@ -489,6 +489,42 @@ private: bool _seenNonDeclarationStatement; }; +class IdsThatShouldNotBeUsedInDesigner : public QStringList +{ +public: + IdsThatShouldNotBeUsedInDesigner() : QStringList({ "top", + "bottom", + "left", + "right", + "width", + "height", + "x", + "y", + "opacity", + "parent", + "item", + "flow", + "color", + "margin", + "padding", + "border", + "font", + "text", + "source", + "state", + "visible", + "focus", + "data", + "clip", + "layer", + "scale", + "enabled", + "anchors"}) + { + } + +}; + class VisualAspectsPropertyBlackList : public QStringList { public: @@ -563,6 +599,7 @@ public: } // end of anonymous namespace +Q_GLOBAL_STATIC(IdsThatShouldNotBeUsedInDesigner, idsThatShouldNotBeUsedInDesigner) Q_GLOBAL_STATIC(VisualAspectsPropertyBlackList, visualAspectsPropertyBlackList) Q_GLOBAL_STATIC(UnsupportedTypesByVisualDesigner, unsupportedTypesByVisualDesigner) Q_GLOBAL_STATIC(UnsupportedRootObjectTypesByVisualDesigner, unsupportedRootObjectTypesByVisualDesigner) @@ -634,6 +671,7 @@ void Check::enableQmlDesignerChecks() enableMessage(WarnReferenceToParentItemNotSupportedByVisualDesigner); enableMessage(WarnAboutQtQuick1InsteadQtQuick2); enableMessage(ErrUnsupportedRootTypeInVisualDesigner); + enableMessage(ErrInvalidIdeInVisualDesigner); //## triggers too often ## check.enableMessage(StaticAnalysis::WarnUndefinedValueForVisualDesigner); } @@ -645,6 +683,7 @@ void Check::disableQmlDesignerChecks() disableMessage(WarnUndefinedValueForVisualDesigner); disableMessage(WarnStatesOnlyInRootItemForVisualDesigner); disableMessage(ErrUnsupportedRootTypeInVisualDesigner); + disableMessage(ErrInvalidIdeInVisualDesigner); } void Check::enableQmlDesignerUiFileChecks() @@ -927,6 +966,10 @@ bool Check::visit(UiScriptBinding *ast) return false; } + if (idsThatShouldNotBeUsedInDesigner->contains(id)) { + addMessage(ErrInvalidIdeInVisualDesigner, loc); + } + if (m_idStack.top().contains(id)) { addMessage(ErrDuplicateId, loc); return false; -- cgit v1.2.1