summaryrefslogtreecommitdiff
path: root/src/libs/qmljs/qmljscheck.cpp
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2016-10-26 14:15:02 +0200
committerTim Jenssen <tim.jenssen@qt.io>2016-10-26 16:08:29 +0000
commit99aaf86a33ce08536b1a0f34940687c589026b6f (patch)
tree30df733deebde80db97a7505b101cf6061b57e90 /src/libs/qmljs/qmljscheck.cpp
parentde6021c71a7f6067581fe9b0b71d81b6f5d0c07f (diff)
downloadqt-creator-99aaf86a33ce08536b1a0f34940687c589026b6f.tar.gz
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 <tim.jenssen@qt.io>
Diffstat (limited to 'src/libs/qmljs/qmljscheck.cpp')
-rw-r--r--src/libs/qmljs/qmljscheck.cpp43
1 files changed, 43 insertions, 0 deletions
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;