Tokenizer: Fixed problem in Tokenizer::simplifyRedundantParanthesis when simplifying 'void delete(double num);'
This commit is contained in:
parent
a2b4e5641f
commit
51bc784537
|
@ -6068,6 +6068,7 @@ bool Tokenizer::simplifyRedundantParanthesis()
|
|||
|
||||
if (!Token::simpleMatch(tok->tokAt(-2), "operator delete") &&
|
||||
Token::Match(tok->previous(), "delete|; (") &&
|
||||
(tok->strAt(-1) != "delete" || tok->next()->varId() > 0) &&
|
||||
Token::Match(tok->link(), ") ;|,"))
|
||||
{
|
||||
tok->link()->deleteThis();
|
||||
|
|
|
@ -44,16 +44,13 @@ private:
|
|||
TEST_CASE(tokenize3);
|
||||
TEST_CASE(tokenize4);
|
||||
TEST_CASE(tokenize5);
|
||||
TEST_CASE(tokenize6);
|
||||
TEST_CASE(tokenize6); // array access. replace "*(p+1)" => "p[1]"
|
||||
TEST_CASE(tokenize7);
|
||||
TEST_CASE(tokenize8);
|
||||
TEST_CASE(tokenize9);
|
||||
TEST_CASE(tokenize10);
|
||||
TEST_CASE(tokenize11);
|
||||
|
||||
// array access. replace "*(p+1)" => "p[1]"
|
||||
TEST_CASE(tokenize6);
|
||||
|
||||
// don't freak out when the syntax is wrong
|
||||
TEST_CASE(wrong_syntax);
|
||||
|
||||
|
@ -191,6 +188,7 @@ private:
|
|||
TEST_CASE(removeParantheses6);
|
||||
TEST_CASE(removeParantheses7);
|
||||
TEST_CASE(removeParantheses8); // Ticket #1865
|
||||
TEST_CASE(removeParantheses9); // Ticket #1962
|
||||
|
||||
TEST_CASE(tokenize_double);
|
||||
TEST_CASE(tokenize_strings);
|
||||
|
@ -3294,7 +3292,7 @@ private:
|
|||
|
||||
void removeParantheses7()
|
||||
{
|
||||
const char code[] = ";(delete(p), (p)=0);";
|
||||
const char code[] = ";char *p; (delete(p), (p)=0);";
|
||||
|
||||
// tokenize..
|
||||
Tokenizer tokenizer;
|
||||
|
@ -3306,7 +3304,7 @@ private:
|
|||
std::ostringstream ostr;
|
||||
for (const Token *tok = tokenizer.tokens(); tok; tok = tok->next())
|
||||
ostr << " " << tok->str();
|
||||
ASSERT_EQUALS(" ; delete p ; ( p ) = 0 ;", ostr.str());
|
||||
ASSERT_EQUALS(" ; char * p ; delete p ; ( p ) = 0 ;", ostr.str());
|
||||
}
|
||||
|
||||
void removeParantheses8()
|
||||
|
@ -3323,6 +3321,11 @@ private:
|
|||
ASSERT_EQUALS(expected, actual);
|
||||
}
|
||||
|
||||
void removeParantheses9()
|
||||
{
|
||||
ASSERT_EQUALS("void delete ( double num ) ;", tokenizeAndStringify("void delete(double num);", false));
|
||||
}
|
||||
|
||||
void tokenize_double()
|
||||
{
|
||||
const char code[] = "void f()\n"
|
||||
|
|
Loading…
Reference in New Issue