diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp index c97fc10c55b..53796d0acdd 100644 --- a/src/libs/qmljs/qmljscheck.cpp +++ b/src/libs/qmljs/qmljscheck.cpp @@ -953,6 +953,13 @@ bool Check::visit(UiObjectBinding *ast) //addMessage(ErrBehavioursNotSupportedInQmlUi, locationFromRange(ast->firstSourceLocation(), ast->lastSourceLocation())); } + if (!m_typeStack.isEmpty() && m_typeStack.last() == "State" + && toString(ast->qualifiedId) == "when") { + addMessage( + ErrWhenConditionCannotBeObject, + locationFromRange(ast->firstSourceLocation(), ast->lastSourceLocation())); + } + visitQmlObject(ast, ast->qualifiedTypeNameId, ast->initializer); return false; } diff --git a/src/libs/qmljs/qmljsstaticanalysismessage.cpp b/src/libs/qmljs/qmljsstaticanalysismessage.cpp index a58bf43765b..fc4579245db 100644 --- a/src/libs/qmljs/qmljsstaticanalysismessage.cpp +++ b/src/libs/qmljs/qmljsstaticanalysismessage.cpp @@ -238,6 +238,7 @@ StaticAnalysisMessages::StaticAnalysisMessages() Tr::tr("Do not reference the root item as alias.")); newMsg(WarnAliasReferRootHierarchy, Warning, Tr::tr("Avoid referencing the root item in a hierarchy.")); + newMsg(ErrWhenConditionCannotBeObject, Error, Tr::tr("When condtion cannot contain an object.")); } } // anonymous namespace diff --git a/src/libs/qmljs/qmljsstaticanalysismessage.h b/src/libs/qmljs/qmljsstaticanalysismessage.h index 97dd95c5eb9..b26eab2bd25 100644 --- a/src/libs/qmljs/qmljsstaticanalysismessage.h +++ b/src/libs/qmljs/qmljsstaticanalysismessage.h @@ -113,7 +113,8 @@ enum Type { WarnComponentRequiresChildren = 327, WarnDuplicateImport = 400, ErrAliasReferRoot = 401, - WarnAliasReferRootHierarchy = 402 + WarnAliasReferRootHierarchy = 402, + ErrWhenConditionCannotBeObject = 403, }; class QMLJS_EXPORT PrototypeMessageData {