Fix check for calls to OWeakObject::release
Change-Id: I90030dee12676eb356ebe2244358052cfcd725de
This commit is contained in:
@@ -106,16 +106,23 @@ public:
|
|||||||
{
|
{
|
||||||
// note: this is only sometimes a CXXMethodDecl
|
// note: this is only sometimes a CXXMethodDecl
|
||||||
FunctionDecl const*const pCalled(pCallExpr->getDirectCallee());
|
FunctionDecl const*const pCalled(pCallExpr->getDirectCallee());
|
||||||
if (pCalled->getName() == "release"
|
if (pCalled->getName() == "release")
|
||||||
//this never works && pCalled == pOverridden
|
|
||||||
&& (pCalled->getParent() == pOverridden->getParent()
|
|
||||||
// allow this convenient shortcut
|
|
||||||
|| loplugin::TypeCheck(QualType(pMethodDecl->getParent()->getTypeForDecl(), 0)).Class("OWeakObject").Namespace("cppu")
|
|
||||||
|| loplugin::TypeCheck(QualType(pMethodDecl->getParent()->getTypeForDecl(), 0)).Class("OWeakAggObject").Namespace("cppu")))
|
|
||||||
{
|
{
|
||||||
return true;
|
//this never works && pCalled == pOverridden
|
||||||
|
if (pCalled->getParent() == pOverridden->getParent())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Allow this convenient shortcut:
|
||||||
|
auto td = dyn_cast<TypeDecl>(pCalled->getParent());
|
||||||
|
if (td != nullptr
|
||||||
|
&& (loplugin::TypeCheck(QualType(td->getTypeForDecl(), 0)).Class("OWeakObject").Namespace("cppu")
|
||||||
|
|| loplugin::TypeCheck(QualType(td->getTypeForDecl(), 0)).Class("OWeakAggObject").Namespace("cppu")))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (pCalled->getName() == "relase_ChildImpl") // FIXME remove this lunacy
|
else if (pCalled->getName() == "relase_ChildImpl") // FIXME remove this lunacy
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user