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