xref: /aosp_15_r20/external/clang/test/Index/complete-blocks.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// The line and column layout of this test is significant. Run lines
2*67e74705SXin Li// are at the end.
3*67e74705SXin Litypedef void (^block_t)(float f, double d);
4*67e74705SXin Livoid f(int (^block)(int x, int y));
5*67e74705SXin Livoid g(block_t b);
6*67e74705SXin Li
7*67e74705SXin Livoid test_f() {
8*67e74705SXin Li
9*67e74705SXin Li}
10*67e74705SXin Li
11*67e74705SXin Li@interface A
12*67e74705SXin Li- method:(int (^)(int x, int y))b;
13*67e74705SXin Li- method2:(block_t)b;
14*67e74705SXin Li@end
15*67e74705SXin Li
16*67e74705SXin Livoid test_A(A *a) {
17*67e74705SXin Li  [a method:0];
18*67e74705SXin Li}
19*67e74705SXin Li
20*67e74705SXin Li@interface B
21*67e74705SXin Li- method3:(int (^)(void))b;
22*67e74705SXin Li@end
23*67e74705SXin Li
24*67e74705SXin Livoid test_B(B *b) {
25*67e74705SXin Li  [b method3:^int(void){ return 0; }];
26*67e74705SXin Li}
27*67e74705SXin Li
28*67e74705SXin Li@interface C
29*67e74705SXin Li- method4:(void(^)(void))arg;
30*67e74705SXin Li- method5:(void(^)())arg5;
31*67e74705SXin Li@end
32*67e74705SXin Li
33*67e74705SXin Livoid test_C(C *c) {
34*67e74705SXin Li  [c method4:^{}];
35*67e74705SXin Li}
36*67e74705SXin Li
37*67e74705SXin Li@interface D
38*67e74705SXin Li- method6:(void(^)(block_t block))arg;
39*67e74705SXin Li@end
40*67e74705SXin Li
41*67e74705SXin Livoid test_D(D *d) {
42*67e74705SXin Li  [d method6:0];
43*67e74705SXin Li}
44*67e74705SXin Li
45*67e74705SXin Li@interface I1
46*67e74705SXin Li- method7:(int (^_Nullable)(int x, int y))b;
47*67e74705SXin Li@end
48*67e74705SXin Livoid f2(int (^_Nullable block)(int x, int y));
49*67e74705SXin Livoid test_f2(I1 *o) {
50*67e74705SXin Li  [o method7:0];
51*67e74705SXin Li}
52*67e74705SXin Li
53*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:8:1 %s | FileCheck -check-prefix=CHECK-CC1 %s
54*67e74705SXin Li// CHECK-CC1: FunctionDecl:{ResultType void}{TypedText f}{LeftParen (}{Placeholder ^int(int x, int y)block}{RightParen )} (50)
55*67e74705SXin Li// CHECK-CC1: FunctionDecl:{ResultType void}{TypedText g}{LeftParen (}{Placeholder ^(float f, double d)b}{RightParen )} (50)
56*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:17:6 %s | FileCheck -check-prefix=CHECK-CC2 %s
57*67e74705SXin Li// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType id}{TypedText method2:}{Placeholder ^(float f, double d)b} (35)
58*67e74705SXin Li// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType id}{TypedText method:}{Placeholder ^int(int x, int y)b} (35)
59*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:25:6 %s | FileCheck -check-prefix=CHECK-CC3 %s
60*67e74705SXin Li// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType id}{TypedText method3:}{Placeholder ^int(void)b} (35)
61*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:34:6 %s | FileCheck -check-prefix=CHECK-CC4 %s
62*67e74705SXin Li// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType id}{TypedText method4:}{Placeholder ^(void)arg} (35)
63*67e74705SXin Li// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType id}{TypedText method5:}{Placeholder ^(void)arg5} (35)
64*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:25:15 %s | FileCheck -check-prefix=CHECK-CC5 %s
65*67e74705SXin Li// CHECK-CC5: TypedefDecl:{TypedText block_t} (50)
66*67e74705SXin Li// CHECK-CC5: TypedefDecl:{TypedText Class} (50)
67*67e74705SXin Li// CHECK-CC5-NOT: test_A
68*67e74705SXin Li// CHECK-CC5: {TypedText union} (50)
69*67e74705SXin Li
70*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:42:6 %s | FileCheck -check-prefix=CHECK-CC6 %s
71*67e74705SXin Li// CHECK-CC6: ObjCInstanceMethodDecl:{ResultType id}{TypedText method6:}{Placeholder ^(block_t block)arg} (35)
72*67e74705SXin Li
73*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:50:1 %s | FileCheck -check-prefix=CHECK-CC7 %s
74*67e74705SXin Li// CHECK-CC7: FunctionDecl:{ResultType void}{TypedText f2}{LeftParen (}{Placeholder ^int(int x, int y)block}{RightParen )} (50)
75*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:50:6 %s | FileCheck -check-prefix=CHECK-CC8 %s
76*67e74705SXin Li// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType id}{TypedText method7:}{Placeholder ^int(int x, int y)b} (35)
77