зеркало из https://github.com/microsoft/clang-1.git
[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
This commit is contained in:
Родитель
eaa9511dd2
Коммит
90fd67af4a
|
@ -1,3 +1,9 @@
|
|||
|
||||
@interface I
|
||||
@end
|
||||
|
||||
@interface B
|
||||
@end
|
||||
|
||||
@protocol P
|
||||
@end
|
||||
|
|
|
@ -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
|
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче