Home | History | Annotate | Download | only in Index
      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 
     13 void 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 
     36 void 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