]> granicus.if.org Git - clang/commitdiff
[libclang] Suppress indexing references for occurrences of the interface
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Thu, 15 Dec 2011 00:04:56 +0000 (00:04 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Thu, 15 Dec 2011 00:04:56 +0000 (00:04 +0000)
in a superclass and the protocols in a protocol list.

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

test/Index/index-suppress-refs.h
test/Index/index-suppress-refs.m
tools/libclang/IndexingContext.cpp

index 2592f0fe4d7f57c34b189c80041910ad2f7494ef..03c56243ba6fbdaf9b4281b7208f17ac261bcbc8 100644 (file)
@@ -1,3 +1,9 @@
 
 @interface I
 @end
+
+@interface B
+@end
+
+@protocol P
+@end
index 49abf50af2edade99fdf32c0d92de2da141a4081..46420ee0c7d35851ca6780380a9fadfeca9922c6 100644 (file)
@@ -14,9 +14,17 @@ MyInt gx;
 
 @class I;
 
+@interface S : B<P>
+-(void)meth:(B*)b :(id<P>)p;
+@end
+
 // RUN: env CINDEXTEST_SUPPRESSREFS=1 c-index-test -index-file %s | FileCheck %s
 // CHECK:      [indexDeclaration]: kind: objc-class | name: I
 // CHECK-NEXT:      <ObjCContainerInfo>: kind: interface
+// CHECK-NEXT: [indexDeclaration]: kind: objc-class | name: B
+// CHECK-NEXT:      <ObjCContainerInfo>: kind: interface
+// CHECK-NEXT: [indexDeclaration]: kind: objc-protocol | name: P
+// CHECK-NEXT:      <ObjCContainerInfo>: kind: interface
 // CHECK-NEXT: [indexDeclaration]: kind: typedef | name: MyInt
 // CHECK-NEXT: [indexDeclaration]: kind: variable | name: gx
 // CHECK-NEXT: [indexDeclaration]: kind: objc-class | name: I
@@ -27,3 +35,10 @@ MyInt gx;
 // CHECK-NEXT: [indexDeclaration]: kind: objc-instance-method | name: meth
 // CHECK-NOT:  [indexEntityReference]: kind: objc-class | name: I
 // CHECK-NOT:  [indexDeclaration]: kind: objc-class | name: I
+// CHECK-NEXT: [indexDeclaration]: kind: objc-class | name: S
+// CHECK-NEXT:      <ObjCContainerInfo>: kind: interface
+// CHECK-NEXT:      <base>: kind: objc-class | name: B
+// CHECK-NEXT:      <protocol>: kind: objc-protocol | name: P
+// CHECK-NEXT: [indexDeclaration]: kind: objc-instance-method | name: meth::
+// CHECK-NOT:  [indexEntityReference]: kind: objc-class | name: B
+// CHECK-NOT:  [indexEntityReference]: kind: objc-protocol | name: P
\ No newline at end of file
index a2480ba092c7a9dd12cdc44fb2b577d04678006d..8d27d85a55db1691b3e8e93b7ec6631c654d8c8c 100644 (file)
@@ -34,6 +34,9 @@ IndexingContext::ObjCProtocolListInfo::ObjCProtocolListInfo(
                                 MakeCursorObjCProtocolRef(PD, Loc, IdxCtx.CXTU),
                                 IdxCtx.getIndexLoc(Loc) };
     ProtInfos.push_back(ProtInfo);
+
+    if (IdxCtx.suppressRefs())
+      IdxCtx.markEntityOccurrenceInFile(PD, Loc);
   }
 
   for (unsigned i = 0, e = ProtInfos.size(); i != e; ++i)
@@ -328,6 +331,9 @@ bool IndexingContext::handleObjCInterface(const ObjCInterfaceDecl *D) {
     BaseClass.base = &BaseEntity;
     BaseClass.cursor = MakeCursorObjCSuperClassRef(SuperD, SuperLoc, CXTU);
     BaseClass.loc = getIndexLoc(SuperLoc);
+
+    if (suppressRefs())
+      markEntityOccurrenceInFile(SuperD, SuperLoc);
   }
   
   ObjCProtocolListInfo ProtInfo(D->getReferencedProtocols(), *this, SA);