fix #2580 (false postive with Unused private function)

This commit is contained in:
Robert Reif 2011-02-14 19:50:13 -05:00
parent d4f204a25a
commit 218464df89
2 changed files with 19 additions and 5 deletions

View File

@ -906,12 +906,14 @@ const Token *SymbolDatabase::initBaseInfo(Scope *scope, const Token *tok)
base.name += tok2->str(); base.name += tok2->str();
base.scope = 0; base.scope = 0;
// don't add unhandled templates // add unhandled templates
if (tok2->next()->str() == "<") if (tok2->next()->str() == "<")
{ {
int level1 = 1; int level1 = 1;
while (tok2->next()) while (tok2->next())
{ {
base.name += tok2->next()->str();
if (tok2->next()->str() == ">") if (tok2->next()->str() == ">")
{ {
level1--; level1--;
@ -926,11 +928,8 @@ const Token *SymbolDatabase::initBaseInfo(Scope *scope, const Token *tok)
} }
// save pattern for base class name // save pattern for base class name
else
{
scope->derivedFrom.push_back(base); scope->derivedFrom.push_back(base);
} }
}
tok2 = tok2->next(); tok2 = tok2->next();
} }

View File

@ -67,6 +67,7 @@ private:
TEST_CASE(testDoesNotIdentifyMethodAsLastFunctionArgument); TEST_CASE(testDoesNotIdentifyMethodAsLastFunctionArgument);
TEST_CASE(multiFile); TEST_CASE(multiFile);
TEST_CASE(unknownBaseTemplate); // ticket #2580
} }
@ -571,6 +572,20 @@ private:
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("", errout.str());
} }
void unknownBaseTemplate() // ticket #2580
{
check("class Bla : public Base2<Base> {\n"
"public:\n"
" Bla() {}\n"
"private:\n"
" virtual void F() const;\n"
"};\n"
"void Bla::F() const { }");
ASSERT_EQUALS("", errout.str());
}
}; };
REGISTER_TEST(TestUnusedPrivateFunction) REGISTER_TEST(TestUnusedPrivateFunction)