diff options
author | Christian Stenger <christian.stenger@qt.io> | 2021-05-04 12:04:01 +0200 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2021-05-05 10:32:59 +0000 |
commit | 2447d1d69ca941947c0df5cf32c6798f4cce1306 (patch) | |
tree | cc62a3fb660ee297fe6ac35dca171b90a0ab9f8b /src/libs/qmljs/qmljscheck.cpp | |
parent | 845afb25fc7bc296f4bd0aeb12207cdfbbc99107 (diff) | |
download | qt-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.cpp | 21 |
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); |