Fixed ticket #3580 (syntax error in multi variable declaration header).
This commit is contained in:
parent
8949464ed6
commit
af02908d42
|
@ -5124,12 +5124,13 @@ void Tokenizer::simplifyVarDecl(bool only_k_r_fpar)
|
||||||
{
|
{
|
||||||
// Split up variable declarations..
|
// Split up variable declarations..
|
||||||
// "int a=4;" => "int a; a=4;"
|
// "int a=4;" => "int a; a=4;"
|
||||||
|
bool finishedwithkr = true;
|
||||||
for (Token *tok = _tokens; tok; tok = tok->next()) {
|
for (Token *tok = _tokens; tok; tok = tok->next()) {
|
||||||
if (Token::simpleMatch(tok, "= {")) {
|
if (Token::simpleMatch(tok, "= {")) {
|
||||||
tok = tok->next()->link();
|
tok = tok->next()->link();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (only_k_r_fpar) {
|
if (only_k_r_fpar && finishedwithkr) {
|
||||||
if (tok->str() == "(" || tok->str() == "[" || tok->str() == "{") {
|
if (tok->str() == "(" || tok->str() == "[" || tok->str() == "{") {
|
||||||
tok = tok->link();
|
tok = tok->link();
|
||||||
if (tok->next() && Token::Match(tok, ") !!{"))
|
if (tok->next() && Token::Match(tok, ") !!{"))
|
||||||
|
@ -5292,8 +5293,11 @@ void Tokenizer::simplifyVarDecl(bool only_k_r_fpar)
|
||||||
tok2 = NULL;
|
tok2 = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tok2)
|
if (!tok2) {
|
||||||
|
if (only_k_r_fpar)
|
||||||
|
finishedwithkr = false;
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (tok2->str() == ",") {
|
if (tok2->str() == ",") {
|
||||||
tok2->str(";");
|
tok2->str(";");
|
||||||
|
@ -5352,6 +5356,8 @@ void Tokenizer::simplifyVarDecl(bool only_k_r_fpar)
|
||||||
tok2 = tok2->next();
|
tok2 = tok2->next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (only_k_r_fpar && !finishedwithkr && tok2->strAt(1) == "{")
|
||||||
|
finishedwithkr = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -293,6 +293,7 @@ private:
|
||||||
TEST_CASE(vardecl16);
|
TEST_CASE(vardecl16);
|
||||||
TEST_CASE(vardecl17);
|
TEST_CASE(vardecl17);
|
||||||
TEST_CASE(vardecl18);
|
TEST_CASE(vardecl18);
|
||||||
|
TEST_CASE(vardecl19);
|
||||||
TEST_CASE(vardecl_stl_1);
|
TEST_CASE(vardecl_stl_1);
|
||||||
TEST_CASE(vardecl_stl_2);
|
TEST_CASE(vardecl_stl_2);
|
||||||
TEST_CASE(vardecl_template);
|
TEST_CASE(vardecl_template);
|
||||||
|
@ -4699,6 +4700,21 @@ private:
|
||||||
"}", tokenizeAndStringify(code));
|
"}", tokenizeAndStringify(code));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vardecl19() {
|
||||||
|
const char code[] = "void func(in, r, m)\n"
|
||||||
|
"int in;"
|
||||||
|
"int r,m;"
|
||||||
|
"{\n"
|
||||||
|
"}\n";
|
||||||
|
|
||||||
|
ASSERT_EQUALS("void func (\n"
|
||||||
|
"int in,\n"
|
||||||
|
"int r,\n"
|
||||||
|
"int m)\n"
|
||||||
|
"{\n"
|
||||||
|
"}", tokenizeAndStringify(code));
|
||||||
|
}
|
||||||
|
|
||||||
void volatile_variables() {
|
void volatile_variables() {
|
||||||
const char code[] = "volatile int a=0;\n"
|
const char code[] = "volatile int a=0;\n"
|
||||||
"volatile int b=0;\n"
|
"volatile int b=0;\n"
|
||||||
|
|
Loading…
Reference in New Issue