1*67e74705SXin Li/* Note: the RUN lines are near the end of the file, since line/column 2*67e74705SXin Li matter for this test. */ 3*67e74705SXin Li 4*67e74705SXin Li@protocol MyProtocol 5*67e74705SXin Li@property float ProtoProp; 6*67e74705SXin Li@end 7*67e74705SXin Li 8*67e74705SXin Li@interface Super { 9*67e74705SXin Li int SuperIVar; 10*67e74705SXin Li} 11*67e74705SXin Li@end 12*67e74705SXin Li@interface Int : Super<MyProtocol> 13*67e74705SXin Li{ 14*67e74705SXin Li int IVar; 15*67e74705SXin Li} 16*67e74705SXin Li 17*67e74705SXin Li@property int prop1; 18*67e74705SXin Li@end 19*67e74705SXin Li 20*67e74705SXin Livoid test_props(Int* ptr) { 21*67e74705SXin Li ptr.prop1 = 0; 22*67e74705SXin Li ptr->IVar = 0; 23*67e74705SXin Li} 24*67e74705SXin Li 25*67e74705SXin Li@interface Sub : Int 26*67e74705SXin Li@property int myProp; 27*67e74705SXin Li 28*67e74705SXin Li- (int)myProp; 29*67e74705SXin Li- (int)myOtherPropLikeThing; 30*67e74705SXin Li- (int)myOtherNonPropThing:(int)value; 31*67e74705SXin Li@end 32*67e74705SXin Li 33*67e74705SXin Liint test_more_props(Sub *s) { 34*67e74705SXin Li return s.myOtherPropLikeThing; 35*67e74705SXin Li} 36*67e74705SXin Li 37*67e74705SXin Li@interface Other 38*67e74705SXin Li@property Sub *sub; 39*67e74705SXin Li@end 40*67e74705SXin Li 41*67e74705SXin Liint test_two_levels(Other *other) { 42*67e74705SXin Li return other.sub.myProp; 43*67e74705SXin Li} 44*67e74705SXin Li 45*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:21:7 %s | FileCheck -check-prefix=CHECK-CC1 %s 46*67e74705SXin Li// CHECK-CC1: ObjCPropertyDecl:{ResultType int}{TypedText prop1} 47*67e74705SXin Li// CHECK-CC1: ObjCPropertyDecl:{ResultType float}{TypedText ProtoProp} 48*67e74705SXin Li// CHECK-CC1: Completion contexts: 49*67e74705SXin Li// CHECK-CC1-NEXT: Objective-C property access 50*67e74705SXin Li// CHECK-CC1-NEXT: Container Kind: ObjCInterfaceDecl 51*67e74705SXin Li// CHECK-CC1-NEXT: Container is complete 52*67e74705SXin Li// CHECK-CC1-NEXT: Container USR: c:objc(cs)Int 53*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:22:8 %s | FileCheck -check-prefix=CHECK-CC2 %s 54*67e74705SXin Li// CHECK-CC2: ObjCIvarDecl:{ResultType int}{TypedText IVar} (35) 55*67e74705SXin Li// CHECK-CC2: ObjCIvarDecl:{ResultType int}{TypedText SuperIVar} (37) 56*67e74705SXin Li// CHECK-CC2: Completion contexts: 57*67e74705SXin Li// CHECK-CC2-NEXT: Arrow member access 58*67e74705SXin Li// CHECK-CC2-NEXT: Container Kind: ObjCInterfaceDecl 59*67e74705SXin Li// CHECK-CC2-NEXT: Container is complete 60*67e74705SXin Li// CHECK-CC2-NEXT: Container USR: c:objc(cs)Int 61*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:34:12 %s | FileCheck -check-prefix=CHECK-CC3 %s 62*67e74705SXin Li// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType int}{TypedText myOtherPropLikeThing} (37) 63*67e74705SXin Li// CHECK-CC3: ObjCPropertyDecl:{ResultType int}{TypedText myProp} (35) 64*67e74705SXin Li// CHECK-CC3: ObjCPropertyDecl:{ResultType int}{TypedText prop1} (35) 65*67e74705SXin Li// CHECK-CC3: ObjCPropertyDecl:{ResultType float}{TypedText ProtoProp} (35) 66*67e74705SXin Li// CHECK-CC3: Completion contexts: 67*67e74705SXin Li// CHECK-CC3-NEXT: Objective-C property access 68*67e74705SXin Li// CHECK-CC3-NEXT: Container Kind: ObjCInterfaceDecl 69*67e74705SXin Li// CHECK-CC3-NEXT: Container is complete 70*67e74705SXin Li// CHECK-CC3-NEXT: Container USR: c:objc(cs)Sub 71*67e74705SXin Li 72*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:42:20 %s | FileCheck -check-prefix=CHECK-CC4 %s 73*67e74705SXin Li// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType int}{TypedText myOtherPropLikeThing} (37) 74*67e74705SXin Li// CHECK-CC4-NEXT: ObjCPropertyDecl:{ResultType int}{TypedText myProp} (35) 75*67e74705SXin Li// CHECK-CC4-NEXT: ObjCPropertyDecl:{ResultType int}{TypedText prop1} (35) 76*67e74705SXin Li// CHECK-CC4-NEXT: ObjCPropertyDecl:{ResultType float}{TypedText ProtoProp} (35) 77*67e74705SXin Li 78