Fixed #3768 (Tokenizer::setVarId: no varid for 'std::string' parameter after a 'std::string' parameter called 'string')

This commit is contained in:
Daniel Marjamäki 2012-05-05 09:59:43 +02:00
parent 005ce81689
commit 11614021e8
2 changed files with 9 additions and 1 deletions

View File

@ -2754,7 +2754,7 @@ static bool setVarIdParseDeclaration(const Token **tok, const std::map<std::stri
typeCount = 0; typeCount = 0;
} else if (tok2->str() == "const") { } else if (tok2->str() == "const") {
; // just skip "const" ; // just skip "const"
} else if (!hasstruct && variableId.find(tok2->str()) != variableId.end()) { } else if (!hasstruct && variableId.find(tok2->str()) != variableId.end() && tok2->previous()->str() != "::") {
++typeCount; ++typeCount;
tok2 = tok2->next(); tok2 = tok2->next();
if (tok2->str() != "::") if (tok2->str() != "::")

View File

@ -210,6 +210,7 @@ private:
TEST_CASE(varid44); TEST_CASE(varid44);
TEST_CASE(varid45); // #3466 TEST_CASE(varid45); // #3466
TEST_CASE(varid46); // struct varname TEST_CASE(varid46); // struct varname
TEST_CASE(varid47); // function parameters
TEST_CASE(varid_cpp_keywords_in_c_code); TEST_CASE(varid_cpp_keywords_in_c_code);
TEST_CASE(varidFunctionCall1); TEST_CASE(varidFunctionCall1);
TEST_CASE(varidFunctionCall2); TEST_CASE(varidFunctionCall2);
@ -3215,6 +3216,13 @@ private:
tokenizeDebugListing(code, false, "test.c")); tokenizeDebugListing(code, false, "test.c"));
} }
void varid47() { // #3768
const std::string code("void f(std::string &string, std::string &len) {}");
ASSERT_EQUALS("\n\n##file 0\n"
"1: void f ( std :: string & string@1 , std :: string & len@2 ) { }\n",
tokenizeDebugListing(code, false, "test.cpp"));
}
void varid_cpp_keywords_in_c_code() { void varid_cpp_keywords_in_c_code() {
const char code[] = "void f() {\n" const char code[] = "void f() {\n"
" delete d;\n" " delete d;\n"