xref: /aosp_15_r20/external/clang/test/Index/complete-objc-message-id.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// Note: the run lines follow their respective tests, since line/column
2*67e74705SXin Li// matter in this test.
3*67e74705SXin Li
4*67e74705SXin Li@interface A
5*67e74705SXin Li+ (id)alloc;
6*67e74705SXin Li+ (id)init;
7*67e74705SXin Li+ (id)new;
8*67e74705SXin Li+ (Class)class;
9*67e74705SXin Li+ (Class)superclass;
10*67e74705SXin Li- (id)retain;
11*67e74705SXin Li- (id)autorelease;
12*67e74705SXin Li- (id)superclass;
13*67e74705SXin Li@end
14*67e74705SXin Li
15*67e74705SXin Li@interface B : A
16*67e74705SXin Li- (int)B_method;
17*67e74705SXin Li@end
18*67e74705SXin Li
19*67e74705SXin Li@interface Unrelated
20*67e74705SXin Li+ (id)icky;
21*67e74705SXin Li@end
22*67e74705SXin Li
23*67e74705SXin Livoid message_id(B *b) {
24*67e74705SXin Li  [[A alloc] init];
25*67e74705SXin Li  [[b retain] B_method];
26*67e74705SXin Li  [[b superclass] B_method];
27*67e74705SXin Li}
28*67e74705SXin Li
29*67e74705SXin Li@implementation Unrelated
30*67e74705SXin Li+ (id)alloc {
31*67e74705SXin Li  return [A alloc];
32*67e74705SXin Li}
33*67e74705SXin Li@end
34*67e74705SXin Li
35*67e74705SXin Li@protocol P1
36*67e74705SXin Li- (int)P1_method1;
37*67e74705SXin Li+ (int)P1_method2;
38*67e74705SXin Li@end
39*67e74705SXin Li
40*67e74705SXin Li@protocol P2 <P1>
41*67e74705SXin Li- (int)P2_method1;
42*67e74705SXin Li+ (int)P2_method2;
43*67e74705SXin Li@end
44*67e74705SXin Li
45*67e74705SXin Livoid message_qualified_id(id<P2> ip2) {
46*67e74705SXin Li  [ip2 P1_method];
47*67e74705SXin Li   ip2 P1_method];
48*67e74705SXin Li}
49*67e74705SXin Li
50*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:24:14 %s | FileCheck -check-prefix=CHECK-CC1 %s
51*67e74705SXin Li// CHECK-CC1: ObjCInstanceMethodDecl:{ResultType id}{TypedText autorelease}
52*67e74705SXin Li// CHECK-CC1-NOT: B_method
53*67e74705SXin Li// CHECK-CC1: ObjCInstanceMethodDecl:{ResultType id}{TypedText retain}
54*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:25:15 %s | FileCheck -check-prefix=CHECK-CC2 %s
55*67e74705SXin Li// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType id}{TypedText autorelease}
56*67e74705SXin Li// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType int}{TypedText B_method}
57*67e74705SXin Li// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType id}{TypedText retain}
58*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:26:19 %s | FileCheck -check-prefix=CHECK-CC3 %s
59*67e74705SXin Li// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType id}{TypedText autorelease}
60*67e74705SXin Li// CHECK-CC3-NOT: B_method
61*67e74705SXin Li// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType id}{TypedText retain}
62*67e74705SXin Li
63*67e74705SXin Li
64*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:31:13 %s | FileCheck -check-prefix=CHECK-SELECTOR-PREF %s
65*67e74705SXin Li// CHECK-SELECTOR-PREF: ObjCClassMethodDecl:{ResultType id}{TypedText alloc} (32)
66*67e74705SXin Li// CHECK-SELECTOR-PREF: ObjCClassMethodDecl:{ResultType Class}{TypedText class} (35)
67*67e74705SXin Li// CHECK-SELECTOR-PREF: ObjCClassMethodDecl:{ResultType id}{TypedText init} (35)
68*67e74705SXin Li// CHECK-SELECTOR-PREF: ObjCClassMethodDecl:{ResultType id}{TypedText new} (35)
69*67e74705SXin Li// CHECK-SELECTOR-PREF: ObjCClassMethodDecl:{ResultType Class}{TypedText superclass} (35)
70*67e74705SXin Li
71*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:46:7 %s | FileCheck -check-prefix=CHECK-INSTANCE-QUAL-ID %s
72*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:47:7 %s | FileCheck -check-prefix=CHECK-INSTANCE-QUAL-ID %s
73*67e74705SXin Li// CHECK-INSTANCE-QUAL-ID: ObjCInstanceMethodDecl:{ResultType int}{TypedText P1_method1} (37)
74*67e74705SXin Li// CHECK-INSTANCE-QUAL-ID: ObjCInstanceMethodDecl:{ResultType int}{TypedText P2_method1} (35)
75