diff --git a/src/libs/qmljs/qmljsbind.cpp b/src/libs/qmljs/qmljsbind.cpp index 249a22edb34..4bc2f193e71 100644 --- a/src/libs/qmljs/qmljsbind.cpp +++ b/src/libs/qmljs/qmljsbind.cpp @@ -197,14 +197,6 @@ QString Bind::toString(UiQualifiedId *qualifiedId, QChar delimiter) return result; } -ExpressionNode *Bind::expression(UiScriptBinding *ast) const -{ - if (ExpressionStatement *statement = cast(ast->statement)) - return statement->expression; - - return 0; -} - ObjectValue *Bind::bindObject(UiQualifiedId *qualifiedTypeNameId, UiObjectInitializer *initializer) { ObjectValue *parentObjectValue = 0; diff --git a/src/libs/qmljs/qmljsbind.h b/src/libs/qmljs/qmljsbind.h index 0ca726e4f4f..a8b85b96ce1 100644 --- a/src/libs/qmljs/qmljsbind.h +++ b/src/libs/qmljs/qmljsbind.h @@ -91,8 +91,6 @@ protected: Interpreter::ObjectValue *switchObjectValue(Interpreter::ObjectValue *newObjectValue); Interpreter::ObjectValue *bindObject(AST::UiQualifiedId *qualifiedTypeNameId, AST::UiObjectInitializer *initializer); - AST::ExpressionNode *expression(AST::UiScriptBinding *ast) const; - private: Document *_doc; Interpreter::Engine _engine; diff --git a/src/libs/qmljs/qmljsevaluate.cpp b/src/libs/qmljs/qmljsevaluate.cpp index 21c98a4d4c0..15cfd0e44a3 100644 --- a/src/libs/qmljs/qmljsevaluate.cpp +++ b/src/libs/qmljs/qmljsevaluate.cpp @@ -450,7 +450,7 @@ bool Evaluate::visit(AST::EmptyStatement *) bool Evaluate::visit(AST::ExpressionStatement *) { - return false; + return true; } bool Evaluate::visit(AST::IfStatement *) diff --git a/src/libs/qmljs/qmljsscopebuilder.cpp b/src/libs/qmljs/qmljsscopebuilder.cpp index 477f82db3b2..77b6dcc5cbf 100644 --- a/src/libs/qmljs/qmljsscopebuilder.cpp +++ b/src/libs/qmljs/qmljsscopebuilder.cpp @@ -238,16 +238,13 @@ void ScopeBuilder::setQmlScopeObject(Node *node) if (scriptBinding->qualifiedId && scriptBinding->qualifiedId->name && scriptBinding->qualifiedId->name->asString() == QLatin1String("target") && ! scriptBinding->qualifiedId->next) { - // ### make Evaluate understand statements. - if (ExpressionStatement *expStmt = cast(scriptBinding->statement)) { - Evaluate evaluator(_context); - const Value *targetValue = evaluator(expStmt->expression); + Evaluate evaluator(_context); + const Value *targetValue = evaluator(scriptBinding->statement); - if (const ObjectValue *target = value_cast(targetValue)) { - scopeChain.qmlScopeObjects.prepend(target); - } else { - scopeChain.qmlScopeObjects.clear(); - } + if (const ObjectValue *target = value_cast(targetValue)) { + scopeChain.qmlScopeObjects.prepend(target); + } else { + scopeChain.qmlScopeObjects.clear(); } } } diff --git a/src/plugins/qmljseditor/quicktoolbar.cpp b/src/plugins/qmljseditor/quicktoolbar.cpp index bdc622d16c0..b53344a75ce 100644 --- a/src/plugins/qmljseditor/quicktoolbar.cpp +++ b/src/plugins/qmljseditor/quicktoolbar.cpp @@ -43,16 +43,14 @@ static inline const Interpreter::ObjectValue * getPropertyChangesTarget(Node *no for (UiObjectMemberList *members = initializer->members; members; members = members->next) { if (UiScriptBinding *scriptBinding = cast(members->member)) { if (scriptBinding->qualifiedId - && scriptBinding->qualifiedId->name->asString() == QLatin1String("target") - && ! scriptBinding->qualifiedId->next) { - if (ExpressionStatement *expressionStatement = cast(scriptBinding->statement)) { - Evaluate evaluator(lookupContext->context()); - const Interpreter::Value *targetValue = evaluator(expressionStatement->expression); - if (const Interpreter::ObjectValue *targetObject = Interpreter::value_cast(targetValue)) { - return targetObject; - } else { - return 0; - } + && scriptBinding->qualifiedId->name->asString() == QLatin1String("target") + && ! scriptBinding->qualifiedId->next) { + Evaluate evaluator(lookupContext->context()); + const Interpreter::Value *targetValue = evaluator(scriptBinding->statement); + if (const Interpreter::ObjectValue *targetObject = Interpreter::value_cast(targetValue)) { + return targetObject; + } else { + return 0; } } }