From 847e5dfb61fff8a929f5ee42422fc7f8df336d32 Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Mon, 29 Nov 2010 12:21:02 +0100
Subject: [PATCH] QmlJS: Don't warn about expression statements in script
 bindings.

Reviewed-by: Roberto Raggi
---
 src/libs/qmljs/qmljscheck.cpp | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index 65a79f2cf3d..3cc555692f1 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -629,8 +629,7 @@ bool Check::visit(ExpressionStatement *ast)
                 || cast<PreDecrementExpression *>(ast->expression)
                 || cast<PreIncrementExpression *>(ast->expression)
                 || cast<PostIncrementExpression *>(ast->expression)
-                || cast<PostDecrementExpression *>(ast->expression)
-                || cast<UiScriptBinding *>(parent());
+                || cast<PostDecrementExpression *>(ast->expression);
         if (BinaryExpression *binary = cast<BinaryExpression *>(ast->expression)) {
             switch (binary->op) {
             case QSOperator::Assign:
@@ -649,6 +648,16 @@ bool Check::visit(ExpressionStatement *ast)
             default: break;
             }
         }
+        if (!ok) {
+            for (int i = 0; Node *p = parent(i); ++i) {
+                if (UiScriptBinding *binding = cast<UiScriptBinding *>(p)) {
+                    if (!cast<Block *>(binding->statement)) {
+                        ok = true;
+                        break;
+                    }
+                }
+            }
+        }
 
         if (!ok) {
             warning(locationFromRange(ast->firstSourceLocation(), ast->lastSourceLocation()),
-- 
GitLab