diff options
author | Christian Kamm <christian.d.kamm@nokia.com> | 2011-12-02 10:41:13 +0100 |
---|---|---|
committer | Christian Kamm <christian.d.kamm@nokia.com> | 2011-12-02 14:49:59 +0100 |
commit | 37bcdcf4f0e3070a42cb462c2ff14cab0142e1ad (patch) | |
tree | fde0dfb21f20ca792cff1300c33b81010d97eb55 /src/libs/qmljs/qmljscheck.cpp | |
parent | dc72cff71aa9ba035c195273cb9b3b923948ff9e (diff) | |
download | qt-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.cpp | 25 |
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) { |