diff --git a/lib/tokenlist.cpp b/lib/tokenlist.cpp index dbffcffd5..7838b7c9c 100644 --- a/lib/tokenlist.cpp +++ b/lib/tokenlist.cpp @@ -391,6 +391,9 @@ static bool iscast(const Token *tok) if (!Token::Match(tok, "( ::| %name%")) return false; + if (Token::simpleMatch(tok->link(), ") ( )")) + return false; + if (tok->previous() && tok->previous()->isName() && tok->previous()->str() != "return") return false; diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index 3552f8ff8..c4476a287 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -8500,6 +8500,7 @@ private: // not cast ASSERT_EQUALS("AB||", testAst("(A)||(B)")); ASSERT_EQUALS("abc[1&=", testAst("a = (b[c]) & 1;")); + ASSERT_EQUALS("abc::(=", testAst("a = (b::c)();")); } void astlambda() {