Symbol database: fixed problem
This commit is contained in:
parent
2833a5ebb5
commit
662cd27f87
|
@ -185,12 +185,28 @@ void CheckClass::addFunction(SpaceInfo **info, const Token **tok)
|
|||
else if (func->tokenDef->str() == (*tok)->str())
|
||||
{
|
||||
if (argsMatch(func->tokenDef->next(), (*tok)->next(), path, path_length))
|
||||
{
|
||||
// normal function?
|
||||
if (!func->retFuncPtr && (*tok)->next()->link())
|
||||
{
|
||||
if ((func->isConst && (*tok)->next()->link()->next()->str() == "const") ||
|
||||
(!func->isConst && (*tok)->next()->link()->next()->str() != "const"))
|
||||
{
|
||||
func->hasBody = true;
|
||||
func->token = (*tok);
|
||||
}
|
||||
}
|
||||
|
||||
// function returning function pointer?
|
||||
else if (func->retFuncPtr)
|
||||
{
|
||||
// todo check for const
|
||||
func->hasBody = true;
|
||||
func->token = (*tok);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (func->hasBody)
|
||||
{
|
||||
addNewFunction(info, tok);
|
||||
|
|
|
@ -149,6 +149,7 @@ private:
|
|||
TEST_CASE(const36); // ticket #2003
|
||||
TEST_CASE(const37); // ticket #2081 and #2085
|
||||
TEST_CASE(const38); // ticket #2135
|
||||
TEST_CASE(const39);
|
||||
TEST_CASE(constoperator1); // operator< can often be const
|
||||
TEST_CASE(constoperator2); // operator<<
|
||||
TEST_CASE(constoperator3);
|
||||
|
@ -4368,6 +4369,28 @@ private:
|
|||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void const39()
|
||||
{
|
||||
checkConst("class Foo\n"
|
||||
"{\n"
|
||||
" int * p;\n"
|
||||
"public:\n"
|
||||
" Foo () : p(0) { }\n"
|
||||
" int * f();\n"
|
||||
" const int * f() const;\n"
|
||||
"};\n"
|
||||
"const int * Foo::f() const\n"
|
||||
"{\n"
|
||||
" return p;\n"
|
||||
"}\n"
|
||||
"int * Foo::f()\n"
|
||||
"{\n"
|
||||
" return p;\n"
|
||||
"}\n");
|
||||
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
// increment/decrement => not const
|
||||
void constincdec()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue