parent
c85e7e7d2f
commit
183969cd4b
|
@ -3482,8 +3482,8 @@ static bool setVarIdParseDeclaration(const Token **tok, const std::map<std::stri
|
||||||
hasstruct = true;
|
hasstruct = true;
|
||||||
typeCount = 0;
|
typeCount = 0;
|
||||||
singleNameCount = 0;
|
singleNameCount = 0;
|
||||||
} else if (tok2->str() == "const") {
|
} else if (Token::Match(tok2, "const|extern")) {
|
||||||
// just skip "const"
|
// just skip "const", "extern"
|
||||||
} else if (!hasstruct && variableId.find(tok2->str()) != variableId.end() && tok2->previous()->str() != "::") {
|
} else if (!hasstruct && variableId.find(tok2->str()) != variableId.end() && tok2->previous()->str() != "::") {
|
||||||
++typeCount;
|
++typeCount;
|
||||||
tok2 = tok2->next();
|
tok2 = tok2->next();
|
||||||
|
@ -3521,6 +3521,8 @@ static bool setVarIdParseDeclaration(const Token **tok, const std::map<std::stri
|
||||||
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), "] ) [;,]")) {
|
} else if (singleNameCount >= 1 && Token::Match(tok2, "( * %name% [") && Token::Match(tok2->linkAt(3), "] ) [;,]")) {
|
||||||
bracket = true;
|
bracket = true;
|
||||||
|
} else if (singleNameCount >= 1 && tok2->previous() && tok2->previous()->isStandardType() && Token::Match(tok2, "( *|&| %name% ) ;")) {
|
||||||
|
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() != "...") {
|
||||||
|
|
|
@ -614,6 +614,12 @@ private:
|
||||||
" return [](int i) { return i > 0; }(s.i);\n"
|
" return [](int i) { return i > 0; }(s.i);\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
check("extern int (*p);\n" // #10936
|
||||||
|
"void f() {\n"
|
||||||
|
" for (int i = 0; ;) {}\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void vardecl() {
|
void vardecl() {
|
||||||
|
|
|
@ -96,6 +96,7 @@ private:
|
||||||
TEST_CASE(varid62);
|
TEST_CASE(varid62);
|
||||||
TEST_CASE(varid63);
|
TEST_CASE(varid63);
|
||||||
TEST_CASE(varid64); // #9928 - extern const char (*x[256])
|
TEST_CASE(varid64); // #9928 - extern const char (*x[256])
|
||||||
|
TEST_CASE(varid65); // #10936
|
||||||
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);
|
||||||
|
@ -1174,6 +1175,29 @@ private:
|
||||||
ASSERT_EQUALS(expected, tokenize(code));
|
ASSERT_EQUALS(expected, tokenize(code));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void varid65() { // #10936
|
||||||
|
{
|
||||||
|
const char code[] = "extern int (*p);";
|
||||||
|
const char expected[] = "1: extern int ( * p@1 ) ;\n";
|
||||||
|
ASSERT_EQUALS(expected, tokenize(code));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char code[] = "extern int (i);";
|
||||||
|
const char expected[] = "1: extern int ( i@1 ) ;\n";
|
||||||
|
ASSERT_EQUALS(expected, tokenize(code));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char code[] = "int (*p);";
|
||||||
|
const char expected[] = "1: int ( * p@1 ) ;\n";
|
||||||
|
ASSERT_EQUALS(expected, tokenize(code));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char code[] = "int (i);";
|
||||||
|
const char expected[] = "1: int ( i@1 ) ;\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