Fixed #1506 (typedef name hiding check combined with forward declaration leeds to false positive)

This commit is contained in:
Robert Reif 2010-03-17 17:31:08 +01:00 committed by Daniel Marjamäki
parent 12c45a1aba
commit b3856cbc5e
2 changed files with 10 additions and 1 deletions

View File

@ -494,7 +494,7 @@ bool Tokenizer::duplicateTypedef(Token **tokPtr, const Token *name)
// look backwards
if (Token::Match(tok->previous(), "typedef|}|>") ||
(Token::Match(tok->previous(), "%type%") &&
(!Token::Match(tok->previous(), "return|new|const|friend") &&
(!Token::Match(tok->previous(), "return|new|const|friend|struct") &&
!Token::Match(tok->tokAt(-2), "friend class"))))
{
// scan backwards for the end of the previous statement

View File

@ -180,6 +180,7 @@ private:
TEST_CASE(simplifyTypedef39);
TEST_CASE(simplifyTypedef40);
TEST_CASE(simplifyTypedef41); // ticket #1488
TEST_CASE(simplifyTypedef42); // ticket #1506
TEST_CASE(reverseArraySyntax)
TEST_CASE(simplify_numeric_condition)
@ -3531,6 +3532,14 @@ private:
ASSERT_EQUALS("", errout.str());
}
void simplifyTypedef42()
{
// ticket #1506
checkSimplifyTypedef("typedef struct A { } A;\n"
"struct A;");
ASSERT_EQUALS("", errout.str());
}
void reverseArraySyntax()
{
ASSERT_EQUALS("a [ 13 ]", tok("13[a]"));