logic: Fix an indexer crash (#911)

This commit is contained in:
Timothee "TTimo" Besset
2020-02-12 08:20:20 +01:00
committed by GitHub
parent 08f43173c0
commit 4da9c53931
@@ -804,18 +804,25 @@ void CxxAstVisitorComponentIndexer::visitCXXDeleteExpr(clang::CXXDeleteExpr* s)
{
if (!s->isArrayForm() && getAstVisitor()->shouldVisitReference(s->getBeginLoc()))
{
if (clang::CXXRecordDecl* recordDecl = s->getDestroyedType()->getAsCXXRecordDecl())
clang::QualType destroyedTypeQual = s->getDestroyedType();
const clang::Type* destroyedType = destroyedTypeQual.getTypePtrOrNull();
if (destroyedType != nullptr)
{
if (clang::CXXDestructorDecl* destructorDecl = recordDecl->getDestructor())
clang::CXXRecordDecl* recordDecl = destroyedType->getAsCXXRecordDecl();
if (recordDecl != nullptr)
{
const Id symbolId = getOrCreateSymbolId(destructorDecl);
clang::CXXDestructorDecl* destructorDecl = recordDecl->getDestructor();
if (destructorDecl != nullptr)
{
const Id symbolId = getOrCreateSymbolId(destructorDecl);
m_client->recordReference(
REFERENCE_CALL,
symbolId,
getOrCreateSymbolId(
getAstVisitor()->getComponent<CxxAstVisitorComponentContext>()->getContext()),
getParseLocation(s->getBeginLoc()));
m_client->recordReference(
REFERENCE_CALL,
symbolId,
getOrCreateSymbolId(
getAstVisitor()->getComponent<CxxAstVisitorComponentContext>()->getContext()),
getParseLocation(s->getBeginLoc()));
}
}
}
}