diff --git a/lib/tokenlist.cpp b/lib/tokenlist.cpp index 1fb0e71623c..a2ffa7e0692 100644 --- a/lib/tokenlist.cpp +++ b/lib/tokenlist.cpp @@ -1721,7 +1721,7 @@ static Token * createAstAtToken(Token *tok) } } - if (Token::Match(tok, "%type% %name%|*|&|::") && !Token::Match(tok, "return|new")) { + if (Token::Match(tok, "%type% %name%|*|&|::") && !Token::Match(tok, "return|new|delete")) { int typecount = 0; Token *typetok = tok; while (Token::Match(typetok, "%type%|::|*|&")) { diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index e0def286f81..2b86a369947 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -6345,6 +6345,7 @@ class TestTokenizer : public TestFixture { ASSERT_EQUALS("sSint(new::(new=", testAst("s = new S(::new int());")); // #12502 ASSERT_EQUALS("sS(new::=", testAst("s = ::new (ptr) S();")); // #12552 ASSERT_EQUALS("pdelete::return", testAst("return ::delete p;")); + ASSERT_EQUALS("gn--(delete", testAst("delete g(--n);")); // placement new ASSERT_EQUALS("X12,3,(new ab,c,", testAst("new (a,b,c) X(1,2,3);"));