Fixed #1327 (False positive: Redundant code: Found a statement that begins with numeric constant)

This commit is contained in:
Daniel Marjamäki 2010-01-29 22:28:49 +01:00
parent 6e48f57826
commit f9d5fb3191
2 changed files with 19 additions and 9 deletions

View File

@ -5365,11 +5365,16 @@ void Tokenizer::simplifyComma()
continue;
}
if (tok->str() == "(")
{
tok = tok->link();
continue;
}
// Skip unhandled template specifiers..
if (Token::Match(tok, "%var% <"))
{
// Todo.. use the link instead.
unsigned int parlevel = 0;
unsigned int comparelevel = 0;
for (Token *tok2 = tok; tok2; tok2 = tok2->next())
{
@ -5384,14 +5389,6 @@ void Tokenizer::simplifyComma()
}
++comparelevel;
}
else if (tok2->str() == "(")
++parlevel;
else if (tok2->str() == ")")
{
if (parlevel == 0)
break;
--parlevel;
}
else if (Token::Match(tok2, "[;{}]"))
break;
}

View File

@ -1878,6 +1878,19 @@ private:
"}\n";
ASSERT_EQUALS("void f ( ) { int a ; a = b < T < char , 3 > , int > ( ) ; }", sizeof_(code));
}
{
// ticket #1327
const char code[] = "const C<1,2,3> foo ()\n"
"{\n"
" return C<1,2,3>(x,y);\n"
"}\n";
const char expected[] = "const C < 1 , 2 , 3 > foo ( ) "
"{"
" return C < 1 , 2 , 3 > ( x , y ) ; "
"}";
ASSERT_EQUALS(expected, sizeof_(code));
}
}
void conditionOperator()