Fix ticket #317 (pre-increment causes style false positive)

This commit is contained in:
Daniel Marjamäki 2009-05-25 08:31:20 +02:00
parent 7fdd497c44
commit 2d2c0e42cc
2 changed files with 15 additions and 1 deletions

View File

@ -2275,7 +2275,7 @@ bool Tokenizer::simplifyKnownVariables()
{ {
incdec(value, tok3->strAt(1)); incdec(value, tok3->strAt(1));
tok2->tokAt(2)->str(value.c_str()); tok2->tokAt(2)->str(value.c_str());
if (Token::Match(tok3, "; %any% %any% ;")) if (Token::Match(tok3, "[;{}] %any% %any% ;"))
{ {
tok3->deleteNext(); tok3->deleteNext();
tok3->deleteNext(); tok3->deleteNext();

View File

@ -68,6 +68,7 @@ private:
TEST_CASE(declareVar); TEST_CASE(declareVar);
TEST_CASE(removePostIncrement); TEST_CASE(removePostIncrement);
TEST_CASE(removePreIncrement);
TEST_CASE(elseif1); TEST_CASE(elseif1);
@ -394,6 +395,19 @@ private:
} }
void removePreIncrement()
{
const char code[] = "void f()\n"
"{\n"
" unsigned int c = 0;\n"
" ++c;\n"
" if (c>0) { ++c; }\n"
" ++c;\n"
"}\n";
ASSERT_EQUALS(std::string("void f ( ) { int c ; c = 3 ; ; { ; } ; } "), tok(code));
}
std::string elseif(const char code[]) std::string elseif(const char code[])
{ {
std::istringstream istr(code); std::istringstream istr(code);