diff --git a/lib/tokenlist.cpp b/lib/tokenlist.cpp index 08bdcf7a3..2a9cf1a71 100644 --- a/lib/tokenlist.cpp +++ b/lib/tokenlist.cpp @@ -370,7 +370,7 @@ static bool iscast(const Token *tok) for (const Token *tok2 = tok->next(); tok2; tok2 = tok2->next()) { if (!Token::Match(tok2, "%var%|*|&|::")) - return Token::Match(tok2, ") %any%") && (!tok2->next()->isOp() && tok2->next()->str() != "["); + return Token::Match(tok2, ") %any%") && (!tok2->next()->isOp() && !Token::Match(tok2->next(), "[[])]")); } return false; diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index bfd2bfcc0..26de7941d 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -10074,6 +10074,9 @@ private: ASSERT_EQUALS("'X''a'>", testAst("('X' > 'a')")); ASSERT_EQUALS("'X''a'>", testAst("(L'X' > L'a')")); + + ASSERT_EQUALS("a0>bc/?d:", testAst("(a>0) ? (b/(c)) : d;")); + ASSERT_EQUALS("abc/+d+", testAst("a + (b/(c)) + d;")); } void astpar() const { // parentheses