varid: set varid for 'extern const char (*x[256]);'. This is a partial fix for #9922
This commit is contained in:
parent
d901edd4af
commit
ad9b2741cd
|
@ -3070,6 +3070,8 @@ static bool setVarIdParseDeclaration(const Token **tok, const std::map<std::stri
|
||||||
ref = !bracket;
|
ref = !bracket;
|
||||||
} else if (singleNameCount >= 1 && Token::Match(tok2, "( [*&]") && Token::Match(tok2->link()->next(), "(|[")) {
|
} else if (singleNameCount >= 1 && Token::Match(tok2, "( [*&]") && Token::Match(tok2->link()->next(), "(|[")) {
|
||||||
bracket = true; // Skip: Seems to be valid pointer to array or function pointer
|
bracket = true; // Skip: Seems to be valid pointer to array or function pointer
|
||||||
|
} else if (singleNameCount >= 1 && Token::Match(tok2, "( * %name% [") && Token::Match(tok2->linkAt(3), "] ) [;,]")) {
|
||||||
|
bracket = true;
|
||||||
} else if (tok2->str() == "::") {
|
} else if (tok2->str() == "::") {
|
||||||
singleNameCount = 0;
|
singleNameCount = 0;
|
||||||
} else if (tok2->str() != "*" && tok2->str() != "::" && tok2->str() != "...") {
|
} else if (tok2->str() != "*" && tok2->str() != "::" && tok2->str() != "...") {
|
||||||
|
|
|
@ -94,6 +94,7 @@ private:
|
||||||
TEST_CASE(varid61); // #4988 inline function
|
TEST_CASE(varid61); // #4988 inline function
|
||||||
TEST_CASE(varid62);
|
TEST_CASE(varid62);
|
||||||
TEST_CASE(varid63);
|
TEST_CASE(varid63);
|
||||||
|
TEST_CASE(varid64); // #9928 - extern const char (*x[256])
|
||||||
TEST_CASE(varid_for_1);
|
TEST_CASE(varid_for_1);
|
||||||
TEST_CASE(varid_for_2);
|
TEST_CASE(varid_for_2);
|
||||||
TEST_CASE(varid_cpp_keywords_in_c_code);
|
TEST_CASE(varid_cpp_keywords_in_c_code);
|
||||||
|
@ -1147,6 +1148,12 @@ private:
|
||||||
ASSERT_EQUALS(expected, tokenize(code));
|
ASSERT_EQUALS(expected, tokenize(code));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void varid64() {
|
||||||
|
const char code[] = "extern const char (*x[256]);";
|
||||||
|
const char expected[] = "1: extern const char ( * x@1 [ 256 ] ) ;\n";
|
||||||
|
ASSERT_EQUALS(expected, tokenize(code));
|
||||||
|
}
|
||||||
|
|
||||||
void varid_for_1() {
|
void varid_for_1() {
|
||||||
const char code[] = "void foo(int a, int b) {\n"
|
const char code[] = "void foo(int a, int b) {\n"
|
||||||
" for (int a=1,b=2;;) {}\n"
|
" for (int a=1,b=2;;) {}\n"
|
||||||
|
|
Loading…
Reference in New Issue