diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 9f2d27d6f..199f8fbe9 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -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 diff --git a/test/testsimplifytokens.cpp b/test/testsimplifytokens.cpp index e479d702c..c1754b5e0 100644 --- a/test/testsimplifytokens.cpp +++ b/test/testsimplifytokens.cpp @@ -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]"));