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