xref: /aosp_15_r20/external/clang/test/Index/complete-parameterized-classes.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li@protocol NSObject
2*67e74705SXin Li@end
3*67e74705SXin Li
4*67e74705SXin Li@interface NSObject
5*67e74705SXin Li@end
6*67e74705SXin Li
7*67e74705SXin Li@interface Test<T : id, U : NSObject *> : NSObject
8*67e74705SXin Li{
9*67e74705SXin Li@public
10*67e74705SXin Li	U myVar;
11*67e74705SXin Li}
12*67e74705SXin Li-(U)getit:(T)val;
13*67e74705SXin Li-(void)apply:(void(^)(T, U))block;
14*67e74705SXin Li-(void)apply2:(void(^_Nonnull)(T, U))block;
15*67e74705SXin Li
16*67e74705SXin Li@property (strong) T prop;
17*67e74705SXin Li@end
18*67e74705SXin Li
19*67e74705SXin Li@interface MyClsA : NSObject
20*67e74705SXin Li@end
21*67e74705SXin Li@interface MyClsB : NSObject
22*67e74705SXin Li@end
23*67e74705SXin Li
24*67e74705SXin Livoid test1(Test<MyClsA*, MyClsB*> *obj) {
25*67e74705SXin Li  [obj ];
26*67e74705SXin Li  obj.;
27*67e74705SXin Li  obj->;
28*67e74705SXin Li}
29*67e74705SXin Li
30*67e74705SXin Livoid test2(Test *obj) {
31*67e74705SXin Li  [obj ];
32*67e74705SXin Li  obj.;
33*67e74705SXin Li  obj->;
34*67e74705SXin Li}
35*67e74705SXin Li
36*67e74705SXin Li@implementation Test
37*67e74705SXin Li-(id)getit:(id)val {}
38*67e74705SXin Li@end
39*67e74705SXin Li
40*67e74705SXin Livoid test3() {
41*67e74705SXin Li  Test<> t;
42*67e74705SXin Li  NSObject<> n;
43*67e74705SXin Li}
44*67e74705SXin Li
45*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:25:8 %s | FileCheck -check-prefix=CHECK-CC0 %s
46*67e74705SXin Li// CHECK-CC0: ObjCInstanceMethodDecl:{ResultType void}{TypedText apply2:}{Placeholder ^(MyClsA *, MyClsB *)block} (35)
47*67e74705SXin Li// CHECK-CC0: ObjCInstanceMethodDecl:{ResultType void}{TypedText apply:}{Placeholder ^(MyClsA *, MyClsB *)block} (35)
48*67e74705SXin Li// CHECK-CC0: ObjCInstanceMethodDecl:{ResultType MyClsB *}{TypedText getit:}{Placeholder (MyClsA *)} (35)
49*67e74705SXin Li
50*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:26:7 %s | FileCheck -check-prefix=CHECK-CC1 %s
51*67e74705SXin Li// CHECK-CC1: ObjCPropertyDecl:{ResultType MyClsA *}{TypedText prop} (35)
52*67e74705SXin Li
53*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:27:8 %s | FileCheck -check-prefix=CHECK-CC2 %s
54*67e74705SXin Li// CHECK-CC2: ObjCIvarDecl:{ResultType MyClsB *}{TypedText myVar} (35)
55*67e74705SXin Li
56*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:31:8 %s | FileCheck -check-prefix=CHECK-CC3 %s
57*67e74705SXin Li// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType void}{TypedText apply2:}{Placeholder ^(id, NSObject *)block} (35)
58*67e74705SXin Li// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType void}{TypedText apply:}{Placeholder ^(id, NSObject *)block} (35)
59*67e74705SXin Li// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType __kindof NSObject *}{TypedText getit:}{Placeholder (id)} (35)
60*67e74705SXin Li
61*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:32:7 %s | FileCheck -check-prefix=CHECK-CC4 %s
62*67e74705SXin Li// CHECK-CC4: ObjCPropertyDecl:{ResultType id}{TypedText prop} (35)
63*67e74705SXin Li
64*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:33:8 %s | FileCheck -check-prefix=CHECK-CC5 %s
65*67e74705SXin Li// CHECK-CC5: ObjCIvarDecl:{ResultType __kindof NSObject *}{TypedText myVar} (35)
66*67e74705SXin Li
67*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:37:2 %s | FileCheck -check-prefix=CHECK-CC6 %s
68*67e74705SXin Li// CHECK-CC6: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText apply2}{TypedText :}{LeftParen (}{Text void (^)(id, NSObject *)}{RightParen )}{Text block} (40)
69*67e74705SXin Li// CHECK-CC6: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText apply}{TypedText :}{LeftParen (}{Text void (^)(id, NSObject *)}{RightParen )}{Text block} (40)
70*67e74705SXin Li// CHECK-CC6: ObjCInstanceMethodDecl:{LeftParen (}{Text NSObject *}{RightParen )}{TypedText getit}{TypedText :}{LeftParen (}{Text id}{RightParen )}{Text val} (40)
71*67e74705SXin Li// CHECK-CC6: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText prop} (40)
72*67e74705SXin Li
73*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:41:8 %s | FileCheck -check-prefix=CHECK-CC7 %s
74*67e74705SXin Li// CHECK-CC7: ObjCInterfaceDecl:{TypedText MyClsA}
75*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:42:12 %s > %t.out
76*67e74705SXin Li// RUN: FileCheck -input-file=%t.out -check-prefix=CHECK-CC8 %s
77*67e74705SXin Li// RUN: FileCheck -input-file=%t.out -check-prefix=CHECK-CC9 %s
78*67e74705SXin Li// CHECK-CC8: ObjCProtocolDecl:{TypedText NSObject}
79*67e74705SXin Li// CHECK-CC9-NOT: ObjCInterfaceDecl:{TypedText MyClsA}
80