summaryrefslogtreecommitdiff
path: root/src/libs/qmljs/qmljscheck.cpp
diff options
context:
space:
mode:
authorChristian Kamm <christian.d.kamm@nokia.com>2011-12-02 10:41:13 +0100
committerChristian Kamm <christian.d.kamm@nokia.com>2011-12-02 14:49:59 +0100
commit37bcdcf4f0e3070a42cb462c2ff14cab0142e1ad (patch)
treefde0dfb21f20ca792cff1300c33b81010d97eb55 /src/libs/qmljs/qmljscheck.cpp
parentdc72cff71aa9ba035c195273cb9b3b923948ff9e (diff)
downloadqt-creator-37bcdcf4f0e3070a42cb462c2ff14cab0142e1ad.tar.gz
QmlJS checks: Disable warnings about expression statements in bindings.
Change-Id: Ic3aca50bec93ec3b810dbda2f9b57eefb966bbdf Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Diffstat (limited to 'src/libs/qmljs/qmljscheck.cpp')
-rw-r--r--src/libs/qmljs/qmljscheck.cpp25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index 40e3ff5a72..af2c925755 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -514,6 +514,7 @@ Check::Check(Document::Ptr doc, const ContextPtr &context)
, _scopeBuilder(&_scopeChain)
, _lastValue(0)
, _importsOk(false)
+ , _inStatementBinding(false)
{
const Imports *imports = context->imports(doc.data());
if (imports && !imports->importFailed())
@@ -736,7 +737,9 @@ bool Check::visit(UiScriptBinding *ast)
Node::accept(ast->qualifiedId, this);
_scopeBuilder.push(ast);
+ _inStatementBinding = true;
Node::accept(ast->statement, this);
+ _inStatementBinding = false;
_scopeBuilder.pop();
return false;
@@ -791,7 +794,9 @@ bool Check::visit(UiPublicMember *ast)
checkBindingRhs(ast->statement);
_scopeBuilder.push(ast);
+ _inStatementBinding = true;
Node::accept(ast->statement, this);
+ _inStatementBinding = false;
Node::accept(ast->binding, this);
_scopeBuilder.pop();
}
@@ -866,9 +871,14 @@ bool Check::visit(FunctionExpression *ast)
addMessages(unreachableCheck(ast->body));
Node::accept(ast->formals, this);
+
+ const bool wasInStatementBinding = _inStatementBinding;
+ _inStatementBinding = false;
_scopeBuilder.push(ast);
Node::accept(ast->body, this);
_scopeBuilder.pop();
+ _inStatementBinding = wasInStatementBinding;
+
return false;
}
@@ -1027,20 +1037,7 @@ bool Check::visit(ExpressionStatement *ast)
}
}
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 (UiPublicMember *member = cast<UiPublicMember *>(p)) {
- if (!cast<Block *>(member->statement)) {
- ok = true;
- break;
- }
- }
- }
+ ok = _inStatementBinding;
}
if (!ok) {