summaryrefslogtreecommitdiff
path: root/src/libs/qmljs/qmljscheck.cpp
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2021-05-04 12:04:01 +0200
committerChristian Stenger <christian.stenger@qt.io>2021-05-05 10:32:59 +0000
commit2447d1d69ca941947c0df5cf32c6798f4cce1306 (patch)
treecc62a3fb660ee297fe6ac35dca171b90a0ab9f8b /src/libs/qmljs/qmljscheck.cpp
parent845afb25fc7bc296f4bd0aeb12207cdfbbc99107 (diff)
downloadqt-creator-2447d1d69ca941947c0df5cf32c6798f4cce1306.tar.gz
QmlJS: Restrict warnings of blocks
Warn only if the block contains a var statement as this is discouraged. Fixes: QTCREATORBUG-24214 Change-Id: Ib96c6723e82b6ddce0b7b63f23d3408f45ae7d58 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/libs/qmljs/qmljscheck.cpp')
-rw-r--r--src/libs/qmljs/qmljscheck.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index 54226da5d5..42287c4740 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -1367,7 +1367,8 @@ bool Check::visit(Block *ast)
&& !cast<IfStatement *>(p)
&& !cast<SwitchStatement *>(p)
&& !isCaseOrDefault(p)
- && !cast<WithStatement *>(p)) {
+ && !cast<WithStatement *>(p)
+ && hasVarStatement(ast)) {
addMessage(WarnBlock, ast->lbraceToken);
}
if (!ast->statements
@@ -1666,6 +1667,24 @@ bool Check::isCaseOrDefault(Node *n)
return false;
}
+bool Check::hasVarStatement(AST::Block *b) const
+{
+ QTC_ASSERT(b, return false);
+ StatementList *s = b->statements;
+ while (s) {
+ if (auto var = cast<VariableStatement *>(s->statement)) {
+ VariableDeclarationList *declList = var->declarations;
+ while (declList) {
+ if (declList->declaration && declList->declaration->scope == VariableScope::Var)
+ return true;
+ declList = declList->next;
+ }
+ }
+ s = s->next;
+ }
+ return false;
+}
+
bool Check::visit(NewExpression *ast)
{
checkNewExpression(ast->expression);