Skip to content

Commit e6476f2

Browse files
Update fwdanalysis.cpp
1 parent ad068da commit e6476f2

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

lib/fwdanalysis.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,14 @@ FwdAnalysis::Result FwdAnalysis::checkRecursive(const Token *expr, const Token *
410410
return Result(Result::Type::NONE);
411411
}
412412

413+
static bool isSimpleIndexExpression(const Token* tok)
414+
{
415+
const Token* idx = tok->astOperand2();
416+
if (idx->isIncDecOp())
417+
idx = idx->astOperand1();
418+
return idx->variable() && idx->variable()->scope() == tok->scope();
419+
}
420+
413421
std::set<nonneg int> FwdAnalysis::getExprVarIds(const Token* expr, bool* localOut, bool* unknownVarIdOut) const
414422
{
415423
// all variable ids in expr.
@@ -418,7 +426,7 @@ std::set<nonneg int> FwdAnalysis::getExprVarIds(const Token* expr, bool* localOu
418426
bool unknownVarId = false;
419427
visitAstNodes(expr,
420428
[&](const Token *tok) {
421-
if (tok->str() == "[" && mWhat == What::UnusedValue)
429+
if (tok->str() == "[" && mWhat == What::UnusedValue && isSimpleIndexExpression(tok))
422430
return ChildrenToVisit::op1;
423431
if (tok->varId() == 0 && tok->isName() && tok->strAt(-1) != ".") {
424432
// unknown variable

0 commit comments

Comments
 (0)