1*67e74705SXin Li 2*67e74705SXin Listruct SB { 3*67e74705SXin Li virtual void meth(); 4*67e74705SXin Li}; 5*67e74705SXin Li 6*67e74705SXin Listruct SS : public SB { 7*67e74705SXin Li void submeth() { 8*67e74705SXin Li this->meth(); 9*67e74705SXin Li SB::meth(); 10*67e74705SXin Li } 11*67e74705SXin Li}; 12*67e74705SXin Li 13*67e74705SXin Li@interface IB 14*67e74705SXin Li-(void)meth; 15*67e74705SXin Li+(void)ClsMeth; 16*67e74705SXin Li@end 17*67e74705SXin Li 18*67e74705SXin Li@interface IS : IB 19*67e74705SXin Li-(void)submeth; 20*67e74705SXin Li+(void)ClsMeth; 21*67e74705SXin Li@end 22*67e74705SXin Li 23*67e74705SXin Li@implementation IS 24*67e74705SXin Li-(void)submeth { 25*67e74705SXin Li [self meth]; 26*67e74705SXin Li [super meth]; 27*67e74705SXin Li} 28*67e74705SXin Li+(void)ClsMeth { 29*67e74705SXin Li [super ClsMeth]; 30*67e74705SXin Li} 31*67e74705SXin Li@end 32*67e74705SXin Li 33*67e74705SXin Livoid foo(SS *ss, IS* is, Class cls) { 34*67e74705SXin Li ss->meth(); 35*67e74705SXin Li [is meth]; 36*67e74705SXin Li [IB ClsMeth]; 37*67e74705SXin Li [cls ClsMeth]; 38*67e74705SXin Li} 39*67e74705SXin Li 40*67e74705SXin Li@interface NSObject 41*67e74705SXin Li+(id)alloc; 42*67e74705SXin Li-(id)init; 43*67e74705SXin Li@end 44*67e74705SXin Li 45*67e74705SXin Li@interface Test : NSObject 46*67e74705SXin Li@end 47*67e74705SXin Li 48*67e74705SXin Livoid test2() { 49*67e74705SXin Li id o = [[Test alloc] init]; 50*67e74705SXin Li} 51*67e74705SXin Li 52*67e74705SXin Li// RUN: c-index-test -cursor-at=%s:8:11 \ 53*67e74705SXin Li// RUN: -cursor-at=%s:9:11 \ 54*67e74705SXin Li// RUN: -cursor-at=%s:25:11 \ 55*67e74705SXin Li// RUN: -cursor-at=%s:26:11 \ 56*67e74705SXin Li// RUN: -cursor-at=%s:29:11 \ 57*67e74705SXin Li// RUN: -cursor-at=%s:34:9 \ 58*67e74705SXin Li// RUN: -cursor-at=%s:35:9 \ 59*67e74705SXin Li// RUN: -cursor-at=%s:36:9 \ 60*67e74705SXin Li// RUN: -cursor-at=%s:37:9 \ 61*67e74705SXin Li// RUN: -cursor-at=%s:49:26 \ 62*67e74705SXin Li// RUN: %s | FileCheck %s 63*67e74705SXin Li 64*67e74705SXin Li// CHECK: 8:11 MemberRefExpr=meth:3:16 {{.*}} Dynamic-call 65*67e74705SXin Li// CHECK-NOT: 9:9 {{.*}} Dynamic-call 66*67e74705SXin Li// CHECK: 25:3 ObjCMessageExpr=meth:14:8 {{.*}} Dynamic-call Receiver-type=ObjCObjectPointer 67*67e74705SXin Li// CHECK-NOT: 26:3 {{.*}} Dynamic-call 68*67e74705SXin Li// CHECK-NOT: 29:3 {{.*}} Dynamic-call 69*67e74705SXin Li// CHECK: 29:3 {{.*}} Receiver-type=ObjCInterface 70*67e74705SXin Li// CHECK: 34:7 MemberRefExpr=meth:3:16 {{.*}} Dynamic-call 71*67e74705SXin Li// CHECK: 35:3 ObjCMessageExpr=meth:14:8 {{.*}} Dynamic-call Receiver-type=ObjCObjectPointer 72*67e74705SXin Li// CHECK-NOT: 36:3 {{.*}} Dynamic-call 73*67e74705SXin Li// CHECK: 36:3 {{.*}} Receiver-type=ObjCInterface 74*67e74705SXin Li// CHECK: 37:3 ObjCMessageExpr=ClsMeth:15:8 {{.*}} Dynamic-call Receiver-type=ObjCClass 75*67e74705SXin Li// CHECK-NOT: 49:10 {{.*}} Dynamic-call 76