1@class Foo; 2 3@interface Foo 4-(id)setWithInt:(int)i andFloat:(float)f; 5@end 6 7@implementation Foo 8-(id)setWithInt:(int)i andFloat:(float)f { 9 return self; 10} 11@end 12 13void test(Foo *foo) { 14 [foo setWithInt:0 andFloat:0]; 15 [foo setWithInt: 2 andFloat: 3]; 16} 17 18@protocol Prot1 19-(void)protMeth; 20@end 21 22@protocol Prot2<Prot1> 23@end 24 25@interface Base<Prot2> 26@end 27 28@interface Sub : Base 29-(void)protMeth; 30@end 31 32@implementation Sub 33-(void)protMeth {} 34@end 35 36void test2(Sub *s, id<Prot1> p) { 37 [s protMeth]; 38 [p protMeth]; 39} 40 41 42// RUN: c-index-test \ 43 44// RUN: -file-refs-at=%s:7:18 \ 45// CHECK: ObjCImplementationDecl=Foo:7:17 (Definition) 46 47// FIXME: There should not be 2 for the same range. 48// CHECK-NEXT: ObjCInterfaceDecl=Foo:1:8 =[1:8 - 1:11] 49// CHECK-NEXT: ObjCClassRef=Foo:3:12 =[1:8 - 1:11] 50 51// CHECK-NEXT: ObjCInterfaceDecl=Foo:3:12 =[3:12 - 3:15] 52// CHECK-NEXT: ObjCImplementationDecl=Foo:7:17 (Definition) =[7:17 - 7:20] 53// CHECK-NEXT: ObjCClassRef=Foo:3:12 =[13:11 - 13:14] 54 55// RUN: -file-refs-at=%s:4:10 \ 56// CHECK-NEXT: ObjCInstanceMethodDecl=setWithInt:andFloat::4:6 57// CHECK-NEXT: ObjCInstanceMethodDecl=setWithInt:andFloat::4:6 =[4:6 - 4:16] 58// CHECK-NEXT: ObjCInstanceMethodDecl=setWithInt:andFloat::8:6 (Definition) =[8:6 - 8:16] 59// CHECK-NEXT: ObjCMessageExpr=setWithInt:andFloat::4:6 =[14:8 - 14:18] 60// CHECK-NEXT: ObjCMessageExpr=setWithInt:andFloat::4:6 =[15:8 - 15:18] 61 62// RUN: -file-refs-at=%s:15:27 \ 63// CHECK-NEXT: ObjCMessageExpr=setWithInt:andFloat::4:6 64// CHECK-NEXT: ObjCInstanceMethodDecl=setWithInt:andFloat::4:6 =[4:24 - 4:32] 65// CHECK-NEXT: ObjCInstanceMethodDecl=setWithInt:andFloat::8:6 (Definition) =[8:24 - 8:32] 66// CHECK-NEXT: ObjCMessageExpr=setWithInt:andFloat::4:6 =[14:21 - 14:29] 67// CHECK-NEXT: ObjCMessageExpr=setWithInt:andFloat::4:6 =[15:22 - 15:30] 68 69// RUN: -file-refs-at=%s:18:13 \ 70// CHECK-NEXT: ObjCProtocolDecl=Prot1:18:11 (Definition) 71// CHECK-NEXT: ObjCProtocolDecl=Prot1:18:11 (Definition) =[18:11 - 18:16] 72// CHECK-NEXT: ObjCProtocolRef=Prot1:18:11 =[22:17 - 22:22] 73// CHECK-NEXT: ObjCProtocolRef=Prot1:18:11 =[36:23 - 36:28] 74 75// RUN: -file-refs-at=%s:38:10 \ 76// CHECK-NEXT: ObjCMessageExpr=protMeth:19:8 77// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:19:8 =[19:8 - 19:16] 78// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:29:8 [Overrides @19:8] =[29:8 - 29:16] 79// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:33:8 (Definition) [Overrides @19:8] =[33:8 - 33:16] 80// CHECK-NEXT: ObjCMessageExpr=protMeth:29:8 =[37:6 - 37:14] 81// CHECK-NEXT: ObjCMessageExpr=protMeth:19:8 =[38:6 - 38:14] 82 83// RUN: -file-refs-at=%s:33:12 \ 84// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:33:8 (Definition) [Overrides @19:8] 85// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:19:8 =[19:8 - 19:16] 86// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:29:8 [Overrides @19:8] =[29:8 - 29:16] 87// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:33:8 (Definition) [Overrides @19:8] =[33:8 - 33:16] 88// CHECK-NEXT: ObjCMessageExpr=protMeth:29:8 =[37:6 - 37:14] 89// CHECK-NEXT: ObjCMessageExpr=protMeth:19:8 =[38:6 - 38:14] 90 91// RUN: %s | FileCheck %s 92