forked from OSchip/llvm-project
[index] Record references to class receivers used in property references
rdar://32250025 llvm-svn: 303343
This commit is contained in:
parent
6bba6068be
commit
e1e566d4df
|
@ -246,6 +246,9 @@ public:
|
|||
}
|
||||
|
||||
bool VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *E) {
|
||||
if (E->isClassReceiver())
|
||||
IndexCtx.handleReference(E->getClassReceiver(), E->getReceiverLocation(),
|
||||
Parent, ParentDC);
|
||||
if (E->isExplicitProperty()) {
|
||||
SmallVector<SymbolRelation, 2> Relations;
|
||||
SymbolRoleSet Roles = getRolesForRef(E, Relations);
|
||||
|
|
|
@ -385,3 +385,22 @@ Separate separateT;
|
|||
// CHECK: [[@LINE-1]]:1 | type-alias/C | Separate | {{.*}} | {{.*}} | Ref,RelCont | rel: 1
|
||||
struct Separate separateE;
|
||||
// CHECK: [[@LINE-1]]:8 | struct/C | Separate | {{.*}} | {{.*}} | Ref,RelCont | rel: 1
|
||||
|
||||
@interface ClassReceivers
|
||||
|
||||
@property(class) int p1;
|
||||
+ (int)implicit;
|
||||
+ (void)setImplicit:(int)x;
|
||||
|
||||
@end
|
||||
|
||||
void classReceivers() {
|
||||
ClassReceivers.p1 = 0;
|
||||
// CHECK: [[@LINE-1]]:3 | class/ObjC | ClassReceivers | c:objc(cs)ClassReceivers | _OBJC_CLASS_$_ClassReceivers | Ref,RelCont | rel: 1
|
||||
(void)ClassReceivers.p1;
|
||||
// CHECK: [[@LINE-1]]:9 | class/ObjC | ClassReceivers | c:objc(cs)ClassReceivers | _OBJC_CLASS_$_ClassReceivers | Ref,RelCont | rel: 1
|
||||
ClassReceivers.implicit = 0;
|
||||
// CHECK: [[@LINE-1]]:3 | class/ObjC | ClassReceivers | c:objc(cs)ClassReceivers | _OBJC_CLASS_$_ClassReceivers | Ref,RelCont | rel: 1
|
||||
(void)ClassReceivers.implicit;
|
||||
// CHECK: [[@LINE-1]]:9 | class/ObjC | ClassReceivers | c:objc(cs)ClassReceivers | _OBJC_CLASS_$_ClassReceivers | Ref,RelCont | rel: 1
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue