diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-12-15 00:04:56 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-12-15 00:04:56 +0000 |
commit | 90fd67af4aeec7d1661986dd25eabf924e11a76c (patch) | |
tree | 59f3560006fe705ad0dd75e7006f63554436820e | |
parent | eaa9511dd2bcb0c7f90f47a236a91c82048f484e (diff) |
[libclang] Suppress indexing references for occurrences of the interface
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
-rw-r--r-- | test/Index/index-suppress-refs.h | 6 | ||||
-rw-r--r-- | test/Index/index-suppress-refs.m | 15 | ||||
-rw-r--r-- | tools/libclang/IndexingContext.cpp | 6 |
3 files changed, 27 insertions, 0 deletions
diff --git a/test/Index/index-suppress-refs.h b/test/Index/index-suppress-refs.h index 2592f0fe4d..03c56243ba 100644 --- a/test/Index/index-suppress-refs.h +++ b/test/Index/index-suppress-refs.h @@ -1,3 +1,9 @@ @interface I @end + +@interface B +@end + +@protocol P +@end diff --git a/test/Index/index-suppress-refs.m b/test/Index/index-suppress-refs.m index 49abf50af2..46420ee0c7 100644 --- a/test/Index/index-suppress-refs.m +++ b/test/Index/index-suppress-refs.m @@ -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 diff --git a/tools/libclang/IndexingContext.cpp b/tools/libclang/IndexingContext.cpp index a2480ba092..8d27d85a55 100644 --- a/tools/libclang/IndexingContext.cpp +++ b/tools/libclang/IndexingContext.cpp @@ -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); |