Fixed #609 (Tokenizer: don't add {} after do-while();)
http://sourceforge.net/apps/trac/cppcheck/ticket/609
This commit is contained in:
parent
7b3fdec5cf
commit
cbeb45566b
|
@ -1805,6 +1805,16 @@ bool Tokenizer::simplifyIfAddBraces()
|
||||||
{
|
{
|
||||||
if (Token::Match(tok, "if|for|while ("))
|
if (Token::Match(tok, "if|for|while ("))
|
||||||
{
|
{
|
||||||
|
// don't add "{}" around ";" in "do {} while();" (#609)
|
||||||
|
const Token *prev = tok->previous();
|
||||||
|
if (Token::simpleMatch(prev, "} while") &&
|
||||||
|
prev->link() &&
|
||||||
|
prev->link()->previous() &&
|
||||||
|
prev->link()->previous()->str() == "do")
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// Goto the ending ')'
|
// Goto the ending ')'
|
||||||
int parlevel = 1;
|
int parlevel = 1;
|
||||||
tok = tok->next();
|
tok = tok->next();
|
||||||
|
|
|
@ -59,6 +59,7 @@ private:
|
||||||
TEST_CASE(ifAddBraces5);
|
TEST_CASE(ifAddBraces5);
|
||||||
TEST_CASE(ifAddBraces6);
|
TEST_CASE(ifAddBraces6);
|
||||||
TEST_CASE(ifAddBraces7);
|
TEST_CASE(ifAddBraces7);
|
||||||
|
TEST_CASE(ifAddBraces8);
|
||||||
|
|
||||||
TEST_CASE(whileAddBraces);
|
TEST_CASE(whileAddBraces);
|
||||||
|
|
||||||
|
@ -505,6 +506,12 @@ private:
|
||||||
"}", tokenizeAndStringify(code, true));
|
"}", tokenizeAndStringify(code, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ifAddBraces8()
|
||||||
|
{
|
||||||
|
const char code[] = "do { ; } while(0);";
|
||||||
|
ASSERT_EQUALS("do { ; } while ( false ) ;", tokenizeAndStringify(code, true));
|
||||||
|
}
|
||||||
|
|
||||||
void whileAddBraces()
|
void whileAddBraces()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue