Remove wrong check through template args from containsXInterfaceSubclass

...that was probably only there as a workaround for cases (equally wrongly)
covered by the check for !hasAnyDependentBase in isDerivedFrom.  And the latter
appears to no longer be necessary, probably because the cases it happened to
cover intentionally are now covered correctly through some other logic that got
added to this plugin meanwhile.

Change-Id: Ife6370b4f966198fc731813afe62d765450382e6
This commit is contained in:
Stephan Bergmann 2016-08-26 12:36:12 +02:00
parent e3e66f7b07
commit 6a1bebcc89

View File

@ -83,10 +83,7 @@ bool isDerivedFrom(const CXXRecordDecl *decl, const char *pString) {
if (!decl->hasDefinition()) {
return false;
}
if (// not sure what hasAnyDependentBases() does,
// but it avoids classes we don't want, e.g. WeakAggComponentImplHelper1
!decl->hasAnyDependentBases() &&
!compat::forallBases(
if (!compat::forallBases(
*decl,
#if CLANG_VERSION < 30800
BaseCheckNotSubclass,
@ -223,14 +220,6 @@ bool containsXInterfaceSubclass(const Type* pType0) {
{
return false;
}
for(unsigned i=0; i<pTemplate->getTemplateArgs().size(); ++i) {
const TemplateArgument& rArg = pTemplate->getTemplateArgs()[i];
if (rArg.getKind() == TemplateArgument::ArgKind::Type &&
containsXInterfaceSubclass(rArg.getAsType()))
{
return true;
}
}
}
}
if (pType->isPointerType()) {