blob: 5a7200570becd74f487e22e6f4c5aca232238b88 [file] [log] [blame]
Douglas Gregord3c5d792009-11-17 16:44:22 +00001// Note: the run lines follow their respective tests, since line/column
2// matter in this test.
Douglas Gregordbb71db2010-08-23 23:51:41 +00003#define nil (void*)0
Douglas Gregord3c5d792009-11-17 16:44:22 +00004@protocol FooTestProtocol
5+ protocolClassMethod;
6- protocolInstanceMethod : (int)value;
7@end
8@interface Foo <FooTestProtocol> {
9 void *isa;
10}
11+ (int)classMethod1:a withKeyword:(int)b;
12+ (void)classMethod2;
13+ new;
14- instanceMethod1;
15@end
16
17@interface Foo (FooTestCategory)
18+ categoryClassMethod;
19- categoryInstanceMethod;
20@end
21
22void func() {
23 Foo *obj = [Foo new];
24 [obj xx];
25}
Douglas Gregor8ce33212009-11-17 17:59:40 +000026
27@interface MyClass { }
28+ (int)MyClassMethod:(id)obj;
29- (int)MyInstMethod:(id)x second:(id)y;
30@end
31
32@interface MySubClass : MyClass { }
33+ (int)MySubClassMethod;
34- (int)MySubInstMethod;
35@end
36
37@implementation MyClass
38+ (int)MyClassMethod:(id)obj {
39 return 0;
40}
41
42+ (int)MyPrivateMethod {
43 return 1;
44}
45
46- (int)MyInstMethod:(id)x second:(id)y {
47 return 2;
48}
49
50- (int)MyPrivateInstMethod {
51 return 3;
52}
53@end
Douglas Gregora817a192010-05-27 23:06:34 +000054MyClass *getMyClass();
Douglas Gregor8ce33212009-11-17 17:59:40 +000055@implementation MySubClass
56+ (int)MySubClassMethod {
57 return 2;
58}
59
60+ (int)MySubPrivateMethod {
61 return [super MyPrivateMethod];
62}
63
64- (int)MySubInstMethod:(id)obj {
65 return [super MyInstMethod: obj second:obj];
66}
67
68- (int)MyInstMethod:(id)x second:(id)y {
69 return 3;
70}
71@end
72
73void test_super_var(MySubClass *super) {
74 [super MyInstMethod: super second:super];
75}
76
Douglas Gregora3329fa2009-11-18 00:06:18 +000077@protocol FooTestProtocol2
78- (int)secondProtocolInstanceMethod;
79@end
80
81void test_qual_id(id<FooTestProtocol,FooTestProtocol2> ptr) {
82 [ptr protocolInstanceMethod:1];
83}
84
Douglas Gregor1b605f72009-11-19 01:08:35 +000085@interface Overload
86- (int)Method:(int)i;
87- (int)Method;
88- (int)Method:(float)f Arg1:(int)i1 Arg2:(int)i2;
89- (int)Method:(float)f Arg1:(int)i1 OtherArg:(id)obj;
90- (int)Method:(float)f SomeArg:(int)i1 OtherArg:(id)obj;
91- (int)OtherMethod:(float)f Arg1:(int)i1 Arg2:(int)i2;
92@end
93
94void test_overload(Overload *ovl) {
95 [ovl Method:1 Arg1:1 OtherArg:ovl];
96}
97
Douglas Gregor04c5f972009-12-23 00:21:46 +000098@interface Ellipsis
Douglas Gregordbb71db2010-08-23 23:51:41 +000099- (int)Method:(int)i, ...;
100- (int)SentinelMethod:(int)i, ... __attribute__((sentinel(0,1)));
Douglas Gregor04c5f972009-12-23 00:21:46 +0000101@end
Douglas Gregor04c5f972009-12-23 00:21:46 +0000102void f(Ellipsis *e) {
103 [e Method:1, 2, 3];
104}
105
Douglas Gregore7938a02010-04-06 15:27:03 +0000106@interface Overload2
107+ (int)Method:(int)i;
108+ (int)Method;
109+ (int)Method:(float)f Arg1:(int)i1 Arg2:(int)i2;
110+ (int)Method:(float)f Arg1:(int)i1 OtherArg:(id)obj;
111+ (int)Method:(float)f SomeArg:(int)i1 OtherArg:(id)obj;
112+ (int)OtherMethod:(float)f Arg1:(int)i1 Arg2:(int)i2;
113@end
114
115void test_overload2(void) {
116 [Overload2 Method:1 Arg1:1 OtherArg:ovl];
117}
118
Douglas Gregor6285f752010-04-06 16:40:00 +0000119void msg_id(id x) {
120 [x Method:1 Arg1:1 OtherArg:ovl];
121 [[x blarg] Method:1 Arg1:1 OtherArg:ovl];
122 [id Method:1 Arg1:1 OtherArg:ovl];
123}
124
Douglas Gregor416b5752010-08-25 01:08:01 +0000125@interface A
126- (void)method1;
127@end
128
129@interface B : A
130- (void)method2;
131@end
132
133void test_ranking(B *b) {
134 [b method1];
Douglas Gregored0b69d2010-09-15 16:23:04 +0000135 b method1];
136}
137
Douglas Gregor3e972002010-09-15 23:19:31 +0000138void test_overload3(Overload *ovl) {
Douglas Gregored0b69d2010-09-15 16:23:04 +0000139 ovl Method:1 Arg1:1 OtherArg:ovl];
Douglas Gregorbfcea8b2010-09-16 15:14:18 +0000140 Overload2 Method:1 Arg1:1 OtherArg:ovl];
141 (Overload2 Method:1 Arg1:1 OtherArg:ovl]);
Douglas Gregor416b5752010-08-25 01:08:01 +0000142}
143
Douglas Gregor1154e272010-09-16 16:06:31 +0000144@interface C : B
145- (void)method2;
146- (void)method3;
147@end
148
149void test_redundancy(C *c) {
150 [c method2];
151};
152
Douglas Gregordc520b02010-11-08 21:12:30 +0000153@protocol P
154- (Class)class;
155@end
156
157@interface A () <P>
158@end
159
160@interface A ()
161+ (void)class_method3;
162@end
163
164@interface A (Cat)
165+ (void)class_method4;
166@end
167
168@implementation A
169- (void)method5:(A*)a {
170 [[self class] class_method4];
171}
172@end
173
Douglas Gregord39ae3e2011-02-15 19:17:31 +0000174void test_missing_open_more() {
175 A *a = A class_method3];
176}
177
Douglas Gregoraf670a82011-04-14 20:33:34 +0000178void test_block_invoke(A *(^block1)(int),
179 int (^block2)(int),
180 id (^block3)(int)) {
181 [block1(5) init];
182}
183
Douglas Gregor8f08d742011-07-30 07:55:26 +0000184@interface DO
185- (void)method:(in bycopy A*)ain result:(out byref A**)aout;
186@end
187
188void test_DO(DO *d, A* a) {
189 [d method:a aout:&a];
190}
191
Douglas Gregord3c5d792009-11-17 16:44:22 +0000192// RUN: c-index-test -code-completion-at=%s:23:19 %s | FileCheck -check-prefix=CHECK-CC1 %s
Argyrios Kyrtzidis9ae39562012-09-26 16:39:56 +0000193// CHECK-CC1: {TypedText categoryClassMethod} (35)
194// CHECK-CC1: {TypedText classMethod1:}{Placeholder (id)}{HorizontalSpace }{TypedText withKeyword:}{Placeholder (int)} (35)
195// CHECK-CC1: {TypedText classMethod2} (35)
Douglas Gregor41778c32013-01-30 06:58:39 +0000196// CHECK-CC1: {TypedText instanceMethod1} (35)
Argyrios Kyrtzidis9ae39562012-09-26 16:39:56 +0000197// CHECK-CC1: {TypedText new} (35)
198// CHECK-CC1: {TypedText protocolClassMethod} (37)
Douglas Gregor63745d52011-07-21 01:05:26 +0000199// CHECK-CC1: Completion contexts:
200// CHECK-CC1-NEXT: Objective-C class method
201// CHECK-CC1-NEXT: Container Kind: ObjCInterfaceDecl
202// CHECK-CC1-NEXT: Container is complete
203// CHECK-CC1-NEXT: Container USR: c:objc(cs)Foo
Douglas Gregord3c5d792009-11-17 16:44:22 +0000204// RUN: c-index-test -code-completion-at=%s:24:8 %s | FileCheck -check-prefix=CHECK-CC2 %s
205// CHECK-CC2: {TypedText categoryInstanceMethod}
206// CHECK-CC2: {TypedText instanceMethod1}
Douglas Gregor981a0c42010-08-29 19:47:46 +0000207// CHECK-CC2: {TypedText protocolInstanceMethod:}{Placeholder (int)}
Douglas Gregor63745d52011-07-21 01:05:26 +0000208// CHECK-CC2: Completion contexts:
209// CHECK-CC2-NEXT: Objective-C instance method
210// CHECK-CC2-NEXT: Container Kind: ObjCInterfaceDecl
211// CHECK-CC2-NEXT: Container is complete
212// CHECK-CC2-NEXT: Container USR: c:objc(cs)Foo
Douglas Gregor8ce33212009-11-17 17:59:40 +0000213// RUN: c-index-test -code-completion-at=%s:61:16 %s | FileCheck -check-prefix=CHECK-CC3 %s
Douglas Gregor981a0c42010-08-29 19:47:46 +0000214// CHECK-CC3: ObjCClassMethodDecl:{ResultType int}{TypedText MyClassMethod:}{Placeholder (id)}
Douglas Gregorb3fa9192009-12-18 18:53:37 +0000215// CHECK-CC3: ObjCClassMethodDecl:{ResultType int}{TypedText MyPrivateMethod}
Douglas Gregor8ce33212009-11-17 17:59:40 +0000216// RUN: c-index-test -code-completion-at=%s:65:16 %s | FileCheck -check-prefix=CHECK-CC4 %s
Douglas Gregor8e3e8742010-10-18 21:05:04 +0000217// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)}{HorizontalSpace }{TypedText second:}{Placeholder (id)}
Douglas Gregorb3fa9192009-12-18 18:53:37 +0000218// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyPrivateInstMethod}
Douglas Gregor8ce33212009-11-17 17:59:40 +0000219// RUN: c-index-test -code-completion-at=%s:74:9 %s | FileCheck -check-prefix=CHECK-CC5 %s
Douglas Gregor8e3e8742010-10-18 21:05:04 +0000220// CHECK-CC5: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)}{HorizontalSpace }{TypedText second:}{Placeholder (id)}
Douglas Gregorb3fa9192009-12-18 18:53:37 +0000221// CHECK-CC5: ObjCInstanceMethodDecl:{ResultType int}{TypedText MySubInstMethod}
Douglas Gregora3329fa2009-11-18 00:06:18 +0000222// RUN: c-index-test -code-completion-at=%s:82:8 %s | FileCheck -check-prefix=CHECK-CC6 %s
Douglas Gregor981a0c42010-08-29 19:47:46 +0000223// CHECK-CC6: ObjCInstanceMethodDecl:{ResultType id}{TypedText protocolInstanceMethod:}{Placeholder (int)}
Douglas Gregorb3fa9192009-12-18 18:53:37 +0000224// CHECK-CC6: ObjCInstanceMethodDecl:{ResultType int}{TypedText secondProtocolInstanceMethod}
Douglas Gregor1b605f72009-11-19 01:08:35 +0000225// RUN: c-index-test -code-completion-at=%s:95:8 %s | FileCheck -check-prefix=CHECK-CC7 %s
Douglas Gregorb3fa9192009-12-18 18:53:37 +0000226// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method}
Douglas Gregor981a0c42010-08-29 19:47:46 +0000227// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)}
Douglas Gregor8e3e8742010-10-18 21:05:04 +0000228// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)}
229// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)}
230// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace }{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)}
231// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)}
Douglas Gregor1b605f72009-11-19 01:08:35 +0000232// RUN: c-index-test -code-completion-at=%s:95:17 %s | FileCheck -check-prefix=CHECK-CC8 %s
Douglas Gregor8e3e8742010-10-18 21:05:04 +0000233// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)}
234// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)}
235// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)}
Douglas Gregorb4a7c032010-11-17 21:36:08 +0000236// CHECK-CC8-NOT: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText }
Douglas Gregor1b605f72009-11-19 01:08:35 +0000237// RUN: c-index-test -code-completion-at=%s:95:24 %s | FileCheck -check-prefix=CHECK-CC9 %s
Douglas Gregor981a0c42010-08-29 19:47:46 +0000238// CHECK-CC9: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText Arg2:}{Placeholder (int)}
239// CHECK-CC9: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText OtherArg:}{Placeholder (id)}
Douglas Gregorea777402011-07-26 15:24:30 +0000240// CHECK-CC9: Objective-C selector: Method:Arg1:
Douglas Gregor92253692009-12-07 09:54:55 +0000241// RUN: c-index-test -code-completion-at=%s:61:11 %s | FileCheck -check-prefix=CHECK-CCA %s
Douglas Gregor52e0de42013-01-31 05:03:46 +0000242// CHECK-CCA: TypedefDecl:{TypedText Class} (50)
243// CHECK-CCA-NEXT: ObjCInterfaceDecl:{TypedText Foo} (50)
244// CHECK-CCA-NOT: FunctionDecl:{ResultType void}{TypedText func}{LeftParen (}{RightParen )} (50)
245// CHECK-CCA:FunctionDecl:{ResultType MyClass *}{TypedText getMyClass}{LeftParen (}{RightParen )} (50)
246// CHECK-CCA: TypedefDecl:{TypedText id} (50)
247// CHECK-CCA: ObjCInterfaceDecl:{TypedText MyClass} (50)
248// CHECK-CCA: ObjCInterfaceDecl:{TypedText MySubClass} (50)
249// CHECK-CCA: {ResultType Class}{TypedText self} (34)
250// CHECK-CCA: {TypedText super} (40)
Douglas Gregor04c5f972009-12-23 00:21:46 +0000251// RUN: c-index-test -code-completion-at=%s:103:6 %s | FileCheck -check-prefix=CHECK-CCB %s
Douglas Gregor400f5972010-08-31 05:13:43 +0000252// CHECK-CCB: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int), ...}
253// CHECK-CCB: ObjCInstanceMethodDecl:{ResultType int}{TypedText SentinelMethod:}{Placeholder (int), ...}{Text , nil}
Douglas Gregore7938a02010-04-06 15:27:03 +0000254// RUN: c-index-test -code-completion-at=%s:116:14 %s | FileCheck -check-prefix=CHECK-CCC %s
255// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method}
Douglas Gregor981a0c42010-08-29 19:47:46 +0000256// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)}
Douglas Gregor8e3e8742010-10-18 21:05:04 +0000257// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)}
258// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)}
259// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace }{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)}
260// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)}
Douglas Gregore7938a02010-04-06 15:27:03 +0000261// RUN: c-index-test -code-completion-at=%s:116:23 %s | FileCheck -check-prefix=CHECK-CCD %s
Douglas Gregor8e3e8742010-10-18 21:05:04 +0000262// CHECK-CCD: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)}
263// CHECK-CCD: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)}
264// CHECK-CCD: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)}
Douglas Gregorb4a7c032010-11-17 21:36:08 +0000265// CHECK-CCD-NOT: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText }
Douglas Gregorea777402011-07-26 15:24:30 +0000266// CHECK-CCD: Objective-C selector: Method:
Douglas Gregore7938a02010-04-06 15:27:03 +0000267// RUN: c-index-test -code-completion-at=%s:116:30 %s | FileCheck -check-prefix=CHECK-CCE %s
Douglas Gregor981a0c42010-08-29 19:47:46 +0000268// CHECK-CCE: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText Arg2:}{Placeholder (int)}
269// CHECK-CCE: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText OtherArg:}{Placeholder (id)}
Douglas Gregore7938a02010-04-06 15:27:03 +0000270// RUN: c-index-test -code-completion-at=%s:61:11 %s | FileCheck -check-prefix=CHECK-CCF %s
Douglas Gregore7938a02010-04-06 15:27:03 +0000271// CHECK-CCF: TypedefDecl:{TypedText Class}
272// CHECK-CCF: ObjCInterfaceDecl:{TypedText Foo}
Douglas Gregora817a192010-05-27 23:06:34 +0000273// CHECK-CCF-NOT: FunctionDecl:{ResultType void}{TypedText func}{LeftParen (}{RightParen )}
Douglas Gregore7938a02010-04-06 15:27:03 +0000274// CHECK-CCF: TypedefDecl:{TypedText id}
275// CHECK-CCF: ObjCInterfaceDecl:{TypedText MyClass}
276// CHECK-CCF: ObjCInterfaceDecl:{TypedText MySubClass}
Douglas Gregore7938a02010-04-06 15:27:03 +0000277// CHECK-CCF: {ResultType Class}{TypedText self}
278// CHECK-CCF: {TypedText super}
Douglas Gregor6285f752010-04-06 16:40:00 +0000279// RUN: c-index-test -code-completion-at=%s:120:6 %s | FileCheck -check-prefix=CHECK-CCG %s
Douglas Gregor10998652010-08-26 00:30:24 +0000280// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText categoryInstanceMethod}
281// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText instanceMethod1}
282// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method}
Douglas Gregor8e3e8742010-10-18 21:05:04 +0000283// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)}{HorizontalSpace }{TypedText second:}{Placeholder (id)}
Douglas Gregor10998652010-08-26 00:30:24 +0000284// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyPrivateInstMethod}
285// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MySubInstMethod}
Douglas Gregor981a0c42010-08-29 19:47:46 +0000286// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText protocolInstanceMethod:}{Placeholder (int)}
Douglas Gregor10998652010-08-26 00:30:24 +0000287// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText secondProtocolInstanceMethod}
Douglas Gregor6285f752010-04-06 16:40:00 +0000288// RUN: c-index-test -code-completion-at=%s:121:14 %s | FileCheck -check-prefix=CHECK-CCG %s
289// RUN: c-index-test -code-completion-at=%s:122:7 %s | FileCheck -check-prefix=CHECK-CCH %s
290// CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText categoryClassMethod}
Douglas Gregor8e3e8742010-10-18 21:05:04 +0000291// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText classMethod1:}{Placeholder (id)}{HorizontalSpace }{TypedText withKeyword:}{Placeholder (int)}
Douglas Gregor6285f752010-04-06 16:40:00 +0000292// CHECK-CCH: ObjCClassMethodDecl:{ResultType void}{TypedText classMethod2}
293// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText Method}
Douglas Gregor981a0c42010-08-29 19:47:46 +0000294// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)}
295// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MyClassMethod:}{Placeholder (id)}
Douglas Gregor6285f752010-04-06 16:40:00 +0000296// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MyPrivateMethod}
297// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MySubClassMethod}
298// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MySubPrivateMethod}
299// CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText new}
Douglas Gregor8e3e8742010-10-18 21:05:04 +0000300// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)}
Douglas Gregor6285f752010-04-06 16:40:00 +0000301// CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText protocolClassMethod}
Douglas Gregor416b5752010-08-25 01:08:01 +0000302// RUN: c-index-test -code-completion-at=%s:134:6 %s | FileCheck -check-prefix=CHECK-CCI %s
Douglas Gregor0787b322010-10-19 00:03:23 +0000303// CHECK-CCI: ObjCInstanceMethodDecl:{ResultType void}{TypedText method1} (37)
304// CHECK-CCI: ObjCInstanceMethodDecl:{ResultType void}{TypedText method2} (35)
Douglas Gregored0b69d2010-09-15 16:23:04 +0000305
Douglas Gregor1154e272010-09-16 16:06:31 +0000306// RUN: c-index-test -code-completion-at=%s:150:5 %s | FileCheck -check-prefix=CHECK-REDUNDANT %s
Douglas Gregor0787b322010-10-19 00:03:23 +0000307// CHECK-REDUNDANT: ObjCInstanceMethodDecl:{ResultType void}{TypedText method2} (35)
Douglas Gregor1154e272010-09-16 16:06:31 +0000308// CHECK-REDUNDANT-NOT: ObjCInstanceMethodDecl:{ResultType void}{TypedText method2}
Douglas Gregor0787b322010-10-19 00:03:23 +0000309// CHECK-REDUNDANT: ObjCInstanceMethodDecl:{ResultType void}{TypedText method3} (35)
Douglas Gregor1154e272010-09-16 16:06:31 +0000310
Douglas Gregordc520b02010-11-08 21:12:30 +0000311// RUN: c-index-test -code-completion-at=%s:170:16 %s | FileCheck -check-prefix=CHECK-CLASS-RESULT %s
312// CHECK-CLASS-RESULT: ObjCClassMethodDecl:{ResultType void}{TypedText class_method3} (35)
Argyrios Kyrtzidis9ae39562012-09-26 16:39:56 +0000313// CHECK-CLASS-RESULT: ObjCClassMethodDecl:{ResultType void}{TypedText class_method4} (35)
Douglas Gregordc520b02010-11-08 21:12:30 +0000314
Douglas Gregoraf670a82011-04-14 20:33:34 +0000315// RUN: c-index-test -code-completion-at=%s:181:4 %s | FileCheck -check-prefix=CHECK-BLOCK-RECEIVER %s
316// CHECK-BLOCK-RECEIVER: ObjCInterfaceDecl:{TypedText A} (50)
317// CHECK-BLOCK-RECEIVER: ObjCInterfaceDecl:{TypedText B} (50)
318// CHECK-BLOCK-RECEIVER: ParmDecl:{ResultType A *(^)(int)}{TypedText block1} (34)
319// CHECK-BLOCK-RECEIVER-NEXT: ParmDecl:{ResultType id (^)(int)}{TypedText block3} (34)
320
Douglas Gregored0b69d2010-09-15 16:23:04 +0000321// Test code completion with a missing opening bracket:
322// RUN: c-index-test -code-completion-at=%s:135:5 %s | FileCheck -check-prefix=CHECK-CCI %s
323// RUN: c-index-test -code-completion-at=%s:139:7 %s | FileCheck -check-prefix=CHECK-CC7 %s
324// RUN: c-index-test -code-completion-at=%s:139:16 %s | FileCheck -check-prefix=CHECK-CC8 %s
325// RUN: c-index-test -code-completion-at=%s:139:23 %s | FileCheck -check-prefix=CHECK-CC9 %s
Douglas Gregorbfcea8b2010-09-16 15:14:18 +0000326
327// RUN: c-index-test -code-completion-at=%s:140:14 %s | FileCheck -check-prefix=CHECK-CCC %s
328// RUN: c-index-test -code-completion-at=%s:140:23 %s | FileCheck -check-prefix=CHECK-CCD %s
329// RUN: c-index-test -code-completion-at=%s:140:30 %s | FileCheck -check-prefix=CHECK-CCE %s
330// RUN: c-index-test -code-completion-at=%s:141:14 %s | FileCheck -check-prefix=CHECK-CCC %s
331// RUN: c-index-test -code-completion-at=%s:141:23 %s | FileCheck -check-prefix=CHECK-CCD %s
332// RUN: c-index-test -code-completion-at=%s:141:30 %s | FileCheck -check-prefix=CHECK-CCE %s
Douglas Gregordc520b02010-11-08 21:12:30 +0000333
Douglas Gregord39ae3e2011-02-15 19:17:31 +0000334// RUN: c-index-test -code-completion-at=%s:175:12 %s | FileCheck -check-prefix=CHECK-CLASS-RESULT %s
Douglas Gregor8f08d742011-07-30 07:55:26 +0000335
336// RUN: c-index-test -code-completion-at=%s:189:6 %s | FileCheck -check-prefix=CHECK-DISTRIB-OBJECTS %s
Douglas Gregor407d1f92011-11-09 02:13:45 +0000337// CHECK-DISTRIB-OBJECTS: ObjCInstanceMethodDecl:{ResultType void}{TypedText method:}{Placeholder (in bycopy A *)}{HorizontalSpace }{TypedText result:}{Placeholder (out byref A **)} (35)