diff --git a/src/libs/qmljs/qmljsbind.cpp b/src/libs/qmljs/qmljsbind.cpp index 249a22edb34a2d6a471fa9f3d5d221a393545357..4bc2f193e71b2f1a2f805441570abc7bda66a3b1 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<ExpressionStatement *>(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 0ca726e4f4f33b551ab9a37c4bdd897f0b8fcc92..a8b85b96ce1f56b8b2a496eb6354771ad77439ec 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 21c98a4d4c05144896edf7275db9f462c2e20a76..15cfd0e44a32d5beefc899ae5c0aa3b13403c31b 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 477f82db3b2b9dd6dd369a74920f2bd947d7574d..77b6dcc5cbfa0ec20c66687baec626ab63492d31 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<ExpressionStatement *>(scriptBinding->statement)) { - Evaluate evaluator(_context); - const Value *targetValue = evaluator(expStmt->expression); - - if (const ObjectValue *target = value_cast<const ObjectValue *>(targetValue)) { - scopeChain.qmlScopeObjects.prepend(target); - } else { - scopeChain.qmlScopeObjects.clear(); - } + Evaluate evaluator(_context); + const Value *targetValue = evaluator(scriptBinding->statement); + + if (const ObjectValue *target = value_cast<const ObjectValue *>(targetValue)) { + scopeChain.qmlScopeObjects.prepend(target); + } else { + scopeChain.qmlScopeObjects.clear(); } } } diff --git a/src/plugins/qmljseditor/quicktoolbar.cpp b/src/plugins/qmljseditor/quicktoolbar.cpp index bdc622d16c07872d142840f36836a2c213fd1dd5..b53344a75ced5f0b02aae1edb94ab09fdc28cb0d 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<UiScriptBinding *>(members->member)) { if (scriptBinding->qualifiedId - && scriptBinding->qualifiedId->name->asString() == QLatin1String("target") - && ! scriptBinding->qualifiedId->next) { - if (ExpressionStatement *expressionStatement = cast<ExpressionStatement *>(scriptBinding->statement)) { - Evaluate evaluator(lookupContext->context()); - const Interpreter::Value *targetValue = evaluator(expressionStatement->expression); - if (const Interpreter::ObjectValue *targetObject = Interpreter::value_cast<const Interpreter::ObjectValue *>(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<const Interpreter::ObjectValue *>(targetValue)) { + return targetObject; + } else { + return 0; } } }