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;
                     }
                 }
             }