From: Argyrios Kyrtzidis Date: Wed, 8 Feb 2012 03:04:33 +0000 (+0000) Subject: [libclang] Indexing: When suppressing references, suppress references X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7b318d16992cb68567c3ee217b86cac2ed11d5d8;p=clang [libclang] Indexing: When suppressing references, suppress references of bases in C++ classes. rdar://10768707 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150048 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/libclang/IndexingContext.cpp b/tools/libclang/IndexingContext.cpp index 2e69c46849..059d842515 100644 --- a/tools/libclang/IndexingContext.cpp +++ b/tools/libclang/IndexingContext.cpp @@ -646,6 +646,19 @@ bool IndexingContext::handleCXXRecordDecl(const CXXRecordDecl *RD, CXXDInfo.CXXClassInfo.bases = BaseList.getBases(); CXXDInfo.CXXClassInfo.numBases = BaseList.getNumBases(); + if (suppressRefs()) { + // Go through bases and mark them as referenced. + for (unsigned i = 0, e = BaseList.getNumBases(); i != e; ++i) { + const CXIdxBaseClassInfo *baseInfo = BaseList.getBases()[i]; + if (baseInfo->base) { + const NamedDecl *BaseD = BaseList.BaseEntities[i].Dcl; + SourceLocation + Loc = SourceLocation::getFromRawEncoding(baseInfo->loc.int_data); + markEntityOccurrenceInFile(BaseD, Loc); + } + } + } + return handleDecl(OrigD, OrigD->getLocation(), getCursor(OrigD), CXXDInfo); }