Author: arphaman Date: Thu May 18 05:43:11 2017 New Revision: 303343 URL: http://llvm.org/viewvc/llvm-project?rev=303343&view=rev Log: [index] Record references to class receivers used in property references
rdar://32250025 Modified: cfe/trunk/lib/Index/IndexBody.cpp cfe/trunk/test/Index/Core/index-source.m Modified: cfe/trunk/lib/Index/IndexBody.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Index/IndexBody.cpp?rev=303343&r1=303342&r2=303343&view=diff ============================================================================== --- cfe/trunk/lib/Index/IndexBody.cpp (original) +++ cfe/trunk/lib/Index/IndexBody.cpp Thu May 18 05:43:11 2017 @@ -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); Modified: cfe/trunk/test/Index/Core/index-source.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/Core/index-source.m?rev=303343&r1=303342&r2=303343&view=diff ============================================================================== --- cfe/trunk/test/Index/Core/index-source.m (original) +++ cfe/trunk/test/Index/Core/index-source.m Thu May 18 05:43:11 2017 @@ -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 +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits