xref: /aosp_15_r20/external/clang/test/Index/complete-member-access.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
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