Fix #289 (if() is not properly tokenized)
http://apps.sourceforge.net/trac/cppcheck/ticket/289
This commit is contained in:
parent
e7cff4bc43
commit
f2a5527e60
|
@ -1619,6 +1619,11 @@ bool Tokenizer::simplifyIfAddBraces()
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If there is no code after he if(), abort
|
||||||
|
if (!tok->next())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
|
||||||
// insert open brace..
|
// insert open brace..
|
||||||
tok->insertToken("{");
|
tok->insertToken("{");
|
||||||
tok = tok->next();
|
tok = tok->next();
|
||||||
|
|
|
@ -365,7 +365,7 @@ private:
|
||||||
{
|
{
|
||||||
// remove parantheses..
|
// remove parantheses..
|
||||||
ASSERT_EQUALS("= p ; ", tok("= (p);"));
|
ASSERT_EQUALS("= p ; ", tok("= (p);"));
|
||||||
ASSERT_EQUALS("if ( a < p ) { ", tok("if(a<(p))"));
|
ASSERT_EQUALS("if ( a < p ) { } ", tok("if(a<(p)){}"));
|
||||||
|
|
||||||
// keep parantheses..
|
// keep parantheses..
|
||||||
ASSERT_EQUALS("= a ; ", tok("= (char)a;"));
|
ASSERT_EQUALS("= a ; ", tok("= (char)a;"));
|
||||||
|
|
|
@ -78,6 +78,7 @@ private:
|
||||||
TEST_CASE(ifAddBraces3);
|
TEST_CASE(ifAddBraces3);
|
||||||
TEST_CASE(ifAddBraces4);
|
TEST_CASE(ifAddBraces4);
|
||||||
TEST_CASE(ifAddBraces5);
|
TEST_CASE(ifAddBraces5);
|
||||||
|
TEST_CASE(ifAddBraces6);
|
||||||
|
|
||||||
TEST_CASE(numeric_true_condition);
|
TEST_CASE(numeric_true_condition);
|
||||||
|
|
||||||
|
@ -436,6 +437,22 @@ private:
|
||||||
ASSERT_EQUALS(std::string(" void f ( ) { for ( int i = 0 ; i < 2 ; i ++ ) { if ( true ) { return ; } } return ; }"), ostr.str());
|
ASSERT_EQUALS(std::string(" void f ( ) { for ( int i = 0 ; i < 2 ; i ++ ) { if ( true ) { return ; } } return ; }"), ostr.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ifAddBraces6()
|
||||||
|
{
|
||||||
|
const char code[] = "if()";
|
||||||
|
|
||||||
|
// tokenize..
|
||||||
|
OurTokenizer tokenizer;
|
||||||
|
std::istringstream istr(code);
|
||||||
|
tokenizer.tokenize(istr, "test.cpp");
|
||||||
|
|
||||||
|
ASSERT_EQUALS(false, tokenizer.simplifyIfAddBraces());
|
||||||
|
|
||||||
|
std::ostringstream ostr;
|
||||||
|
for (const Token *tok = tokenizer.tokens(); tok; tok = tok->next())
|
||||||
|
ostr << " " << tok->str();
|
||||||
|
ASSERT_EQUALS(std::string(" if ( )"), ostr.str());
|
||||||
|
}
|
||||||
|
|
||||||
void simplifyKnownVariables1()
|
void simplifyKnownVariables1()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue