]> granicus.if.org Git - clang/commitdiff
[libclang] Indexing: When suppressing references, suppress references
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 8 Feb 2012 03:04:33 +0000 (03:04 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 8 Feb 2012 03:04:33 +0000 (03:04 +0000)
of bases in C++ classes. rdar://10768707

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150048 91177308-0d34-0410-b5e6-96231b3b80d8

tools/libclang/IndexingContext.cpp

index 2e69c46849488f975bdd01c48d20e3704a7120ad..059d84251598edf67ed4758ca8258ec83a6b23a1 100644 (file)
@@ -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);
   }