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