parent
e9bc62d5b4
commit
3f0ef01154
|
@ -1446,8 +1446,11 @@ void Tokenizer::simplifyTypedef()
|
||||||
tok2->insertToken("&");
|
tok2->insertToken("&");
|
||||||
tok2 = tok2->next();
|
tok2 = tok2->next();
|
||||||
|
|
||||||
|
bool hasName = false;
|
||||||
// skip over name
|
// skip over name
|
||||||
if (tok2->next() && tok2->next()->str() != ")") {
|
if (tok2->next() && tok2->next()->str() != ")" && tok2->next()->str() != "," &&
|
||||||
|
tok2->next()->str() != ">") {
|
||||||
|
hasName = true;
|
||||||
if (tok2->next()->str() != "(")
|
if (tok2->next()->str() != "(")
|
||||||
tok2 = tok2->next();
|
tok2 = tok2->next();
|
||||||
|
|
||||||
|
@ -1458,12 +1461,13 @@ void Tokenizer::simplifyTypedef()
|
||||||
// check for array
|
// check for array
|
||||||
if (tok2 && tok2->next() && tok2->next()->str() == "[")
|
if (tok2 && tok2->next() && tok2->next()->str() == "[")
|
||||||
tok2 = tok2->next()->link();
|
tok2 = tok2->next()->link();
|
||||||
} else {
|
|
||||||
// syntax error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tok2->insertToken(")");
|
tok2->insertToken(")");
|
||||||
Token::createMutualLinks(tok2->next(), tok3);
|
Token::createMutualLinks(tok2->next(), tok3);
|
||||||
|
|
||||||
|
if (!hasName)
|
||||||
|
tok2 = tok2->next();
|
||||||
} else if (ptrMember) {
|
} else if (ptrMember) {
|
||||||
if (Token::simpleMatch(tok2, "* (")) {
|
if (Token::simpleMatch(tok2, "* (")) {
|
||||||
tok2->insertToken("*");
|
tok2->insertToken("*");
|
||||||
|
|
|
@ -165,6 +165,7 @@ private:
|
||||||
TEST_CASE(simplifyTypedef127); // ticket #8878
|
TEST_CASE(simplifyTypedef127); // ticket #8878
|
||||||
TEST_CASE(simplifyTypedef128); // ticket #9053
|
TEST_CASE(simplifyTypedef128); // ticket #9053
|
||||||
TEST_CASE(simplifyTypedef129);
|
TEST_CASE(simplifyTypedef129);
|
||||||
|
TEST_CASE(simplifyTypedef130); // ticket #9446
|
||||||
|
|
||||||
TEST_CASE(simplifyTypedefFunction1);
|
TEST_CASE(simplifyTypedefFunction1);
|
||||||
TEST_CASE(simplifyTypedefFunction2); // ticket #1685
|
TEST_CASE(simplifyTypedefFunction2); // ticket #1685
|
||||||
|
@ -2602,6 +2603,19 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void simplifyTypedef130() { // #9446
|
||||||
|
const char code[] = "template <class, class> void a() {\n"
|
||||||
|
" typedef int(*b)[10];\n"
|
||||||
|
" a<b, b>();\n"
|
||||||
|
"}";
|
||||||
|
|
||||||
|
const char exp [] = "template < class , class > void a ( ) { "
|
||||||
|
"a < int ( * ) [ 10 ] , int ( * ) [ 10 ] > ( ) ; "
|
||||||
|
"}";
|
||||||
|
|
||||||
|
ASSERT_EQUALS(exp, tok(code, false));
|
||||||
|
}
|
||||||
|
|
||||||
void simplifyTypedefFunction1() {
|
void simplifyTypedefFunction1() {
|
||||||
{
|
{
|
||||||
const char code[] = "typedef void (*my_func)();\n"
|
const char code[] = "typedef void (*my_func)();\n"
|
||||||
|
|
Loading…
Reference in New Issue