1*67e74705SXin Li// Note: the run lines follow their respective tests, since line/column 2*67e74705SXin Li// matter in this test. 3*67e74705SXin Li#define nil (void*)0 4*67e74705SXin Li@protocol FooTestProtocol 5*67e74705SXin Li+ protocolClassMethod; 6*67e74705SXin Li- protocolInstanceMethod : (int)value; 7*67e74705SXin Li@end 8*67e74705SXin Li@interface Foo <FooTestProtocol> { 9*67e74705SXin Li void *isa; 10*67e74705SXin Li} 11*67e74705SXin Li+ (int)classMethod1:a withKeyword:(int)b; 12*67e74705SXin Li+ (void)classMethod2; 13*67e74705SXin Li+ new; 14*67e74705SXin Li- instanceMethod1; 15*67e74705SXin Li@end 16*67e74705SXin Li 17*67e74705SXin Li@interface Foo (FooTestCategory) 18*67e74705SXin Li+ categoryClassMethod; 19*67e74705SXin Li- categoryInstanceMethod; 20*67e74705SXin Li@end 21*67e74705SXin Li 22*67e74705SXin Livoid func() { 23*67e74705SXin Li Foo *obj = [Foo new]; 24*67e74705SXin Li [obj xx]; 25*67e74705SXin Li} 26*67e74705SXin Li 27*67e74705SXin Li@interface MyClass { } 28*67e74705SXin Li+ (int)MyClassMethod:(id)obj; 29*67e74705SXin Li- (int)MyInstMethod:(id)x second:(id)y; 30*67e74705SXin Li@end 31*67e74705SXin Li 32*67e74705SXin Li@interface MySubClass : MyClass { } 33*67e74705SXin Li+ (int)MySubClassMethod; 34*67e74705SXin Li- (int)MySubInstMethod; 35*67e74705SXin Li@end 36*67e74705SXin Li 37*67e74705SXin Li@implementation MyClass 38*67e74705SXin Li+ (int)MyClassMethod:(id)obj { 39*67e74705SXin Li return 0; 40*67e74705SXin Li} 41*67e74705SXin Li 42*67e74705SXin Li+ (int)MyPrivateMethod { 43*67e74705SXin Li return 1; 44*67e74705SXin Li} 45*67e74705SXin Li 46*67e74705SXin Li- (int)MyInstMethod:(id)x second:(id)y { 47*67e74705SXin Li return 2; 48*67e74705SXin Li} 49*67e74705SXin Li 50*67e74705SXin Li- (int)MyPrivateInstMethod { 51*67e74705SXin Li return 3; 52*67e74705SXin Li} 53*67e74705SXin Li@end 54*67e74705SXin LiMyClass *getMyClass(); 55*67e74705SXin Li@implementation MySubClass 56*67e74705SXin Li+ (int)MySubClassMethod { 57*67e74705SXin Li return 2; 58*67e74705SXin Li} 59*67e74705SXin Li 60*67e74705SXin Li+ (int)MySubPrivateMethod { 61*67e74705SXin Li return [super MyPrivateMethod]; 62*67e74705SXin Li} 63*67e74705SXin Li 64*67e74705SXin Li- (int)MySubInstMethod:(id)obj { 65*67e74705SXin Li return [super MyInstMethod: obj second:obj]; 66*67e74705SXin Li} 67*67e74705SXin Li 68*67e74705SXin Li- (int)MyInstMethod:(id)x second:(id)y { 69*67e74705SXin Li return 3; 70*67e74705SXin Li} 71*67e74705SXin Li@end 72*67e74705SXin Li 73*67e74705SXin Livoid test_super_var(MySubClass *super) { 74*67e74705SXin Li [super MyInstMethod: super second:super]; 75*67e74705SXin Li} 76*67e74705SXin Li 77*67e74705SXin Li@protocol FooTestProtocol2 78*67e74705SXin Li- (int)secondProtocolInstanceMethod; 79*67e74705SXin Li@end 80*67e74705SXin Li 81*67e74705SXin Livoid test_qual_id(id<FooTestProtocol,FooTestProtocol2> ptr) { 82*67e74705SXin Li [ptr protocolInstanceMethod:1]; 83*67e74705SXin Li} 84*67e74705SXin Li 85*67e74705SXin Li@interface Overload 86*67e74705SXin Li- (int)Method:(int)i; 87*67e74705SXin Li- (int)Method; 88*67e74705SXin Li- (int)Method:(float)f Arg1:(int)i1 Arg2:(int)i2; 89*67e74705SXin Li- (int)Method:(float)f Arg1:(int)i1 OtherArg:(id)obj; 90*67e74705SXin Li- (int)Method:(float)f SomeArg:(int)i1 OtherArg:(id)obj; 91*67e74705SXin Li- (int)OtherMethod:(float)f Arg1:(int)i1 Arg2:(int)i2; 92*67e74705SXin Li@end 93*67e74705SXin Li 94*67e74705SXin Livoid test_overload(Overload *ovl) { 95*67e74705SXin Li [ovl Method:1 Arg1:1 OtherArg:ovl]; 96*67e74705SXin Li} 97*67e74705SXin Li 98*67e74705SXin Li@interface Ellipsis 99*67e74705SXin Li- (int)Method:(int)i, ...; 100*67e74705SXin Li- (int)SentinelMethod:(int)i, ... __attribute__((sentinel(0,1))); 101*67e74705SXin Li@end 102*67e74705SXin Livoid f(Ellipsis *e) { 103*67e74705SXin Li [e Method:1, 2, 3]; 104*67e74705SXin Li} 105*67e74705SXin Li 106*67e74705SXin Li@interface Overload2 107*67e74705SXin Li+ (int)Method:(int)i; 108*67e74705SXin Li+ (int)Method; 109*67e74705SXin Li+ (int)Method:(float)f Arg1:(int)i1 Arg2:(int)i2; 110*67e74705SXin Li+ (int)Method:(float)f Arg1:(int)i1 OtherArg:(id)obj; 111*67e74705SXin Li+ (int)Method:(float)f SomeArg:(int)i1 OtherArg:(id)obj; 112*67e74705SXin Li+ (int)OtherMethod:(float)f Arg1:(int)i1 Arg2:(int)i2; 113*67e74705SXin Li@end 114*67e74705SXin Li 115*67e74705SXin Livoid test_overload2(void) { 116*67e74705SXin Li [Overload2 Method:1 Arg1:1 OtherArg:ovl]; 117*67e74705SXin Li} 118*67e74705SXin Li 119*67e74705SXin Livoid msg_id(id x) { 120*67e74705SXin Li [x Method:1 Arg1:1 OtherArg:ovl]; 121*67e74705SXin Li [[x blarg] Method:1 Arg1:1 OtherArg:ovl]; 122*67e74705SXin Li [id Method:1 Arg1:1 OtherArg:ovl]; 123*67e74705SXin Li} 124*67e74705SXin Li 125*67e74705SXin Li@interface A 126*67e74705SXin Li- (void)method1; 127*67e74705SXin Li@end 128*67e74705SXin Li 129*67e74705SXin Li@interface B : A 130*67e74705SXin Li- (void)method2; 131*67e74705SXin Li@end 132*67e74705SXin Li 133*67e74705SXin Livoid test_ranking(B *b) { 134*67e74705SXin Li [b method1]; 135*67e74705SXin Li b method1]; 136*67e74705SXin Li} 137*67e74705SXin Li 138*67e74705SXin Livoid test_overload3(Overload *ovl) { 139*67e74705SXin Li ovl Method:1 Arg1:1 OtherArg:ovl]; 140*67e74705SXin Li Overload2 Method:1 Arg1:1 OtherArg:ovl]; 141*67e74705SXin Li (Overload2 Method:1 Arg1:1 OtherArg:ovl]); 142*67e74705SXin Li} 143*67e74705SXin Li 144*67e74705SXin Li@interface C : B 145*67e74705SXin Li- (void)method2; 146*67e74705SXin Li- (void)method3; 147*67e74705SXin Li@end 148*67e74705SXin Li 149*67e74705SXin Livoid test_redundancy(C *c) { 150*67e74705SXin Li [c method2]; 151*67e74705SXin Li}; 152*67e74705SXin Li 153*67e74705SXin Li@protocol P 154*67e74705SXin Li- (Class)class; 155*67e74705SXin Li@end 156*67e74705SXin Li 157*67e74705SXin Li@interface A () <P> 158*67e74705SXin Li@end 159*67e74705SXin Li 160*67e74705SXin Li@interface A () 161*67e74705SXin Li+ (void)class_method3; 162*67e74705SXin Li@end 163*67e74705SXin Li 164*67e74705SXin Li@interface A (Cat) 165*67e74705SXin Li+ (void)class_method4; 166*67e74705SXin Li@end 167*67e74705SXin Li 168*67e74705SXin Li@implementation A 169*67e74705SXin Li- (void)method5:(A*)a { 170*67e74705SXin Li [[self class] class_method4]; 171*67e74705SXin Li} 172*67e74705SXin Li@end 173*67e74705SXin Li 174*67e74705SXin Livoid test_missing_open_more() { 175*67e74705SXin Li A *a = A class_method3]; 176*67e74705SXin Li} 177*67e74705SXin Li 178*67e74705SXin Livoid test_block_invoke(A *(^block1)(int), 179*67e74705SXin Li int (^block2)(int), 180*67e74705SXin Li id (^block3)(int)) { 181*67e74705SXin Li [block1(5) init]; 182*67e74705SXin Li} 183*67e74705SXin Li 184*67e74705SXin Li@interface DO 185*67e74705SXin Li- (void)method:(in bycopy A*)ain result:(out byref A**)aout; 186*67e74705SXin Li@end 187*67e74705SXin Li 188*67e74705SXin Livoid test_DO(DO *d, A* a) { 189*67e74705SXin Li [d method:a aout:&a]; 190*67e74705SXin Li} 191*67e74705SXin Li 192*67e74705SXin Li@interface Nullability 193*67e74705SXin Li- (nonnull A *)method:(nullable A *)param; 194*67e74705SXin Li@end 195*67e74705SXin Li 196*67e74705SXin Livoid test_Nullability(Nullability *n, A* a) { 197*67e74705SXin Li [n method: a]; 198*67e74705SXin Li} 199*67e74705SXin Li 200*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:23:19 %s | FileCheck -check-prefix=CHECK-CC1 %s 201*67e74705SXin Li// CHECK-CC1: {TypedText categoryClassMethod} (35) 202*67e74705SXin Li// CHECK-CC1: {TypedText classMethod1:}{Placeholder (id)}{HorizontalSpace }{TypedText withKeyword:}{Placeholder (int)} (35) 203*67e74705SXin Li// CHECK-CC1: {TypedText classMethod2} (35) 204*67e74705SXin Li// CHECK-CC1: {TypedText instanceMethod1} (35) 205*67e74705SXin Li// CHECK-CC1: {TypedText new} (35) 206*67e74705SXin Li// CHECK-CC1: {TypedText protocolClassMethod} (37) 207*67e74705SXin Li// CHECK-CC1: Completion contexts: 208*67e74705SXin Li// CHECK-CC1-NEXT: Objective-C class method 209*67e74705SXin Li// CHECK-CC1-NEXT: Container Kind: ObjCInterfaceDecl 210*67e74705SXin Li// CHECK-CC1-NEXT: Container is complete 211*67e74705SXin Li// CHECK-CC1-NEXT: Container USR: c:objc(cs)Foo 212*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:24:8 %s | FileCheck -check-prefix=CHECK-CC2 %s 213*67e74705SXin Li// CHECK-CC2: {TypedText categoryInstanceMethod} 214*67e74705SXin Li// CHECK-CC2: {TypedText instanceMethod1} 215*67e74705SXin Li// CHECK-CC2: {TypedText protocolInstanceMethod:}{Placeholder (int)} 216*67e74705SXin Li// CHECK-CC2: Completion contexts: 217*67e74705SXin Li// CHECK-CC2-NEXT: Objective-C instance method 218*67e74705SXin Li// CHECK-CC2-NEXT: Container Kind: ObjCInterfaceDecl 219*67e74705SXin Li// CHECK-CC2-NEXT: Container is complete 220*67e74705SXin Li// CHECK-CC2-NEXT: Container USR: c:objc(cs)Foo 221*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:61:16 %s | FileCheck -check-prefix=CHECK-CC3 %s 222*67e74705SXin Li// CHECK-CC3: ObjCClassMethodDecl:{ResultType int}{TypedText MyClassMethod:}{Placeholder (id)} 223*67e74705SXin Li// CHECK-CC3: ObjCClassMethodDecl:{ResultType int}{TypedText MyPrivateMethod} 224*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:65:16 %s | FileCheck -check-prefix=CHECK-CC4 %s 225*67e74705SXin Li// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)}{HorizontalSpace }{TypedText second:}{Placeholder (id)} 226*67e74705SXin Li// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyPrivateInstMethod} 227*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:74:9 %s | FileCheck -check-prefix=CHECK-CC5 %s 228*67e74705SXin Li// CHECK-CC5: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)}{HorizontalSpace }{TypedText second:}{Placeholder (id)} 229*67e74705SXin Li// CHECK-CC5: ObjCInstanceMethodDecl:{ResultType int}{TypedText MySubInstMethod} 230*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:82:8 %s | FileCheck -check-prefix=CHECK-CC6 %s 231*67e74705SXin Li// CHECK-CC6: ObjCInstanceMethodDecl:{ResultType id}{TypedText protocolInstanceMethod:}{Placeholder (int)} 232*67e74705SXin Li// CHECK-CC6: ObjCInstanceMethodDecl:{ResultType int}{TypedText secondProtocolInstanceMethod} 233*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:95:8 %s | FileCheck -check-prefix=CHECK-CC7 %s 234*67e74705SXin Li// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method} 235*67e74705SXin Li// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)} 236*67e74705SXin Li// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)} 237*67e74705SXin Li// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)} 238*67e74705SXin Li// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace }{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)} 239*67e74705SXin Li// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)} 240*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:95:17 %s | FileCheck -check-prefix=CHECK-CC8 %s 241*67e74705SXin Li// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)} 242*67e74705SXin Li// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)} 243*67e74705SXin Li// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)} 244*67e74705SXin Li// CHECK-CC8-NOT: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText } 245*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:95:24 %s | FileCheck -check-prefix=CHECK-CC9 %s 246*67e74705SXin Li// CHECK-CC9: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText Arg2:}{Placeholder (int)} 247*67e74705SXin Li// CHECK-CC9: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText OtherArg:}{Placeholder (id)} 248*67e74705SXin Li// CHECK-CC9: Objective-C selector: Method:Arg1: 249*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:61:11 %s | FileCheck -check-prefix=CHECK-CCA %s 250*67e74705SXin Li// CHECK-CCA: TypedefDecl:{TypedText Class} (50) 251*67e74705SXin Li// CHECK-CCA-NEXT: ObjCInterfaceDecl:{TypedText Foo} (50) 252*67e74705SXin Li// CHECK-CCA-NOT: FunctionDecl:{ResultType void}{TypedText func}{LeftParen (}{RightParen )} (50) 253*67e74705SXin Li// CHECK-CCA:FunctionDecl:{ResultType MyClass *}{TypedText getMyClass}{LeftParen (}{RightParen )} (50) 254*67e74705SXin Li// CHECK-CCA: TypedefDecl:{TypedText id} (50) 255*67e74705SXin Li// CHECK-CCA: ObjCInterfaceDecl:{TypedText MyClass} (50) 256*67e74705SXin Li// CHECK-CCA: ObjCInterfaceDecl:{TypedText MySubClass} (50) 257*67e74705SXin Li// CHECK-CCA: {ResultType Class}{TypedText self} (34) 258*67e74705SXin Li// CHECK-CCA: {TypedText super} (40) 259*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:103:6 %s | FileCheck -check-prefix=CHECK-CCB %s 260*67e74705SXin Li// CHECK-CCB: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int), ...} 261*67e74705SXin Li// CHECK-CCB: ObjCInstanceMethodDecl:{ResultType int}{TypedText SentinelMethod:}{Placeholder (int), ...}{Text , nil} 262*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:116:14 %s | FileCheck -check-prefix=CHECK-CCC %s 263*67e74705SXin Li// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method} 264*67e74705SXin Li// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)} 265*67e74705SXin Li// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)} 266*67e74705SXin Li// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)} 267*67e74705SXin Li// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace }{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)} 268*67e74705SXin Li// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)} 269*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:116:23 %s | FileCheck -check-prefix=CHECK-CCD %s 270*67e74705SXin Li// CHECK-CCD: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)} 271*67e74705SXin Li// CHECK-CCD: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)} 272*67e74705SXin Li// CHECK-CCD: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace }{TypedText OtherArg:}{Placeholder (id)} 273*67e74705SXin Li// CHECK-CCD-NOT: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText } 274*67e74705SXin Li// CHECK-CCD: Objective-C selector: Method: 275*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:116:30 %s | FileCheck -check-prefix=CHECK-CCE %s 276*67e74705SXin Li// CHECK-CCE: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText Arg2:}{Placeholder (int)} 277*67e74705SXin Li// CHECK-CCE: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText OtherArg:}{Placeholder (id)} 278*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:61:11 %s | FileCheck -check-prefix=CHECK-CCF %s 279*67e74705SXin Li// CHECK-CCF: TypedefDecl:{TypedText Class} 280*67e74705SXin Li// CHECK-CCF: ObjCInterfaceDecl:{TypedText Foo} 281*67e74705SXin Li// CHECK-CCF-NOT: FunctionDecl:{ResultType void}{TypedText func}{LeftParen (}{RightParen )} 282*67e74705SXin Li// CHECK-CCF: TypedefDecl:{TypedText id} 283*67e74705SXin Li// CHECK-CCF: ObjCInterfaceDecl:{TypedText MyClass} 284*67e74705SXin Li// CHECK-CCF: ObjCInterfaceDecl:{TypedText MySubClass} 285*67e74705SXin Li// CHECK-CCF: {ResultType Class}{TypedText self} 286*67e74705SXin Li// CHECK-CCF: {TypedText super} 287*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:120:6 %s | FileCheck -check-prefix=CHECK-CCG %s 288*67e74705SXin Li// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText categoryInstanceMethod} 289*67e74705SXin Li// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText instanceMethod1} 290*67e74705SXin Li// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method} 291*67e74705SXin Li// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)}{HorizontalSpace }{TypedText second:}{Placeholder (id)} 292*67e74705SXin Li// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyPrivateInstMethod} 293*67e74705SXin Li// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MySubInstMethod} 294*67e74705SXin Li// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText protocolInstanceMethod:}{Placeholder (int)} 295*67e74705SXin Li// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText secondProtocolInstanceMethod} 296*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:121:14 %s | FileCheck -check-prefix=CHECK-CCG %s 297*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:122:7 %s | FileCheck -check-prefix=CHECK-CCH %s 298*67e74705SXin Li// CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText categoryClassMethod} 299*67e74705SXin Li// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText classMethod1:}{Placeholder (id)}{HorizontalSpace }{TypedText withKeyword:}{Placeholder (int)} 300*67e74705SXin Li// CHECK-CCH: ObjCClassMethodDecl:{ResultType void}{TypedText classMethod2} 301*67e74705SXin Li// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText Method} 302*67e74705SXin Li// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)} 303*67e74705SXin Li// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MyClassMethod:}{Placeholder (id)} 304*67e74705SXin Li// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MyPrivateMethod} 305*67e74705SXin Li// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MySubClassMethod} 306*67e74705SXin Li// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MySubPrivateMethod} 307*67e74705SXin Li// CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText new} 308*67e74705SXin Li// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)}{HorizontalSpace }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace }{TypedText Arg2:}{Placeholder (int)} 309*67e74705SXin Li// CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText protocolClassMethod} 310*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:134:6 %s | FileCheck -check-prefix=CHECK-CCI %s 311*67e74705SXin Li// CHECK-CCI: ObjCInstanceMethodDecl:{ResultType void}{TypedText method1} (37) 312*67e74705SXin Li// CHECK-CCI: ObjCInstanceMethodDecl:{ResultType void}{TypedText method2} (35) 313*67e74705SXin Li 314*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:150:5 %s | FileCheck -check-prefix=CHECK-REDUNDANT %s 315*67e74705SXin Li// CHECK-REDUNDANT: ObjCInstanceMethodDecl:{ResultType void}{TypedText method2} (35) 316*67e74705SXin Li// CHECK-REDUNDANT-NOT: ObjCInstanceMethodDecl:{ResultType void}{TypedText method2} 317*67e74705SXin Li// CHECK-REDUNDANT: ObjCInstanceMethodDecl:{ResultType void}{TypedText method3} (35) 318*67e74705SXin Li 319*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:170:16 %s | FileCheck -check-prefix=CHECK-CLASS-RESULT %s 320*67e74705SXin Li// CHECK-CLASS-RESULT: ObjCClassMethodDecl:{ResultType void}{TypedText class_method3} (35) 321*67e74705SXin Li// CHECK-CLASS-RESULT: ObjCClassMethodDecl:{ResultType void}{TypedText class_method4} (35) 322*67e74705SXin Li 323*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:181:4 %s | FileCheck -check-prefix=CHECK-BLOCK-RECEIVER %s 324*67e74705SXin Li// CHECK-BLOCK-RECEIVER: ObjCInterfaceDecl:{TypedText A} (50) 325*67e74705SXin Li// CHECK-BLOCK-RECEIVER: ObjCInterfaceDecl:{TypedText B} (50) 326*67e74705SXin Li// CHECK-BLOCK-RECEIVER: ParmDecl:{ResultType A *(^)(int)}{TypedText block1} (34) 327*67e74705SXin Li// CHECK-BLOCK-RECEIVER-NEXT: ParmDecl:{ResultType id (^)(int)}{TypedText block3} (34) 328*67e74705SXin Li 329*67e74705SXin Li// Test code completion with a missing opening bracket: 330*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:135:5 %s | FileCheck -check-prefix=CHECK-CCI %s 331*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:139:7 %s | FileCheck -check-prefix=CHECK-CC7 %s 332*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:139:16 %s | FileCheck -check-prefix=CHECK-CC8 %s 333*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:139:23 %s | FileCheck -check-prefix=CHECK-CC9 %s 334*67e74705SXin Li 335*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:140:14 %s | FileCheck -check-prefix=CHECK-CCC %s 336*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:140:23 %s | FileCheck -check-prefix=CHECK-CCD %s 337*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:140:30 %s | FileCheck -check-prefix=CHECK-CCE %s 338*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:141:14 %s | FileCheck -check-prefix=CHECK-CCC %s 339*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:141:23 %s | FileCheck -check-prefix=CHECK-CCD %s 340*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:141:30 %s | FileCheck -check-prefix=CHECK-CCE %s 341*67e74705SXin Li 342*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:175:12 %s | FileCheck -check-prefix=CHECK-CLASS-RESULT %s 343*67e74705SXin Li 344*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:189:6 %s | FileCheck -check-prefix=CHECK-DISTRIB-OBJECTS %s 345*67e74705SXin Li// CHECK-DISTRIB-OBJECTS: ObjCInstanceMethodDecl:{ResultType void}{TypedText method:}{Placeholder (in bycopy A *)}{HorizontalSpace }{TypedText result:}{Placeholder (out byref A **)} (35) 346*67e74705SXin Li 347*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:197:6 %s | FileCheck -check-prefix=CHECK-NULLABLE %s 348*67e74705SXin Li// CHECK-NULLABLE: ObjCInstanceMethodDecl:{ResultType A * _Nonnull}{TypedText method:}{Placeholder (nullable A *)} 349