* Fix #11689 FP constStatement with nested typedefs * Add test
This commit is contained in:
parent
107eea236f
commit
beea1a2345
|
@ -858,6 +858,8 @@ namespace {
|
|||
// Function return type => replace array with "*"
|
||||
for (const Token* a = mRangeAfterVar.first; Token::simpleMatch(a, "["); a = a->link()->next())
|
||||
tok3->insertToken("*");
|
||||
} else if (Token::Match(after->previous(), "%name% ( * %name% ) [")) {
|
||||
after = after->linkAt(4)->next();
|
||||
} else {
|
||||
Token* prev = after->previous();
|
||||
if (prev->isName() && prev != tok3)
|
||||
|
|
|
@ -68,6 +68,7 @@ private:
|
|||
TEST_CASE(cfp7);
|
||||
TEST_CASE(carray1);
|
||||
TEST_CASE(carray2);
|
||||
TEST_CASE(carray3);
|
||||
TEST_CASE(cdonotreplace1);
|
||||
TEST_CASE(cppfp1);
|
||||
TEST_CASE(Generic1);
|
||||
|
@ -458,6 +459,20 @@ private:
|
|||
ASSERT_EQUALS("double x [ 10 ] [ 4 ] ;", simplifyTypedef(code));
|
||||
}
|
||||
|
||||
void carray3() {
|
||||
const char* code{};
|
||||
code = "typedef int a[256];\n" // #11689
|
||||
"typedef a b[256];\n"
|
||||
"b* p;\n";
|
||||
ASSERT_EQUALS("int ( * p ) [ 256 ] [ 256 ] ;", simplifyTypedef(code));
|
||||
|
||||
code = "typedef int a[1];\n"
|
||||
"typedef a b[2];\n"
|
||||
"typedef b c[3];\n"
|
||||
"c* p;\n";
|
||||
ASSERT_EQUALS("int ( * p ) [ 3 ] [ 2 ] [ 1 ] ;", simplifyTypedef(code));
|
||||
}
|
||||
|
||||
void cdonotreplace1() {
|
||||
const char code[] = "typedef int t;\n"
|
||||
"int* t;";
|
||||
|
|
Loading…
Reference in New Issue