Home | History | Annotate | Download | only in Index
      1 // Note: the run lines follow their respective tests, since line/column
      2 // matter in this test.
      3 #define nil (void*)0
      4 @protocol FooTestProtocol
      5 + protocolClassMethod;
      6 - protocolInstanceMethod : (int)value;
      7 @end
      8 @interface Foo <FooTestProtocol> {
      9   void *isa;
     10 }
     11 + (int)classMethod1:a withKeyword:(int)b;
     12 + (void)classMethod2;
     13 + new;
     14 - instanceMethod1;
     15 @end
     16 
     17 @interface Foo (FooTestCategory)
     18 + categoryClassMethod;
     19 - categoryInstanceMethod;
     20 @end
     21 
     22 void func() {
     23   Foo *obj = [Foo new];
     24   [obj xx];
     25 }
     26 
     27 @interface MyClass { }
     28 + (int)MyClassMethod:(id)obj;
     29 - (int)MyInstMethod:(id)x second:(id)y;
     30 @end
     31 
     32 @interface MySubClass : MyClass { }
     33 + (int)MySubClassMethod;
     34 - (int)MySubInstMethod;
     35 @end
     36 
     37 @implementation MyClass 
     38 + (int)MyClassMethod:(id)obj {
     39   return 0;
     40 }
     41 
     42 + (int)MyPrivateMethod {
     43   return 1;
     44 }
     45 
     46 - (int)MyInstMethod:(id)x second:(id)y {
     47   return 2;
     48 }
     49 
     50 - (int)MyPrivateInstMethod {
     51   return 3;
     52 }
     53 @end
     54 MyClass *getMyClass();
     55 @implementation MySubClass
     56 + (int)MySubClassMethod {
     57   return 2;
     58 }
     59 
     60 + (int)MySubPrivateMethod {
     61   return [super MyPrivateMethod];
     62 }
     63 
     64 - (int)MySubInstMethod:(id)obj {
     65   return [super MyInstMethod: obj second:obj];
     66 }
     67 
     68 - (int)MyInstMethod:(id)x second:(id)y {
     69   return 3;
     70 }
     71 @end
     72 
     73 void test_super_var(MySubClass *super) {
     74   [super MyInstMethod: super second:super];
     75 }
     76 
     77 @protocol FooTestProtocol2
     78 - (int)secondProtocolInstanceMethod;
     79 @end
     80 
     81 void test_qual_id(id<FooTestProtocol,FooTestProtocol2> ptr) {
     82   [ptr protocolInstanceMethod:1];
     83 }
     84 
     85 @interface Overload
     86 - (int)Method:(int)i;
     87 - (int)Method;
     88 - (int)Method:(float)f Arg1:(int)i1 Arg2:(int)i2;
     89 - (int)Method:(float)f Arg1:(int)i1 OtherArg:(id)obj;
     90 - (int)Method:(float)f SomeArg:(int)i1 OtherArg:(id)obj;
     91 - (int)OtherMethod:(float)f Arg1:(int)i1 Arg2:(int)i2;
     92 @end
     93 
     94 void test_overload(Overload *ovl) {
     95   [ovl Method:1 Arg1:1 OtherArg:ovl];
     96 }
     97 
     98 @interface Ellipsis
     99 - (int)Method:(int)i, ...; 
    100 - (int)SentinelMethod:(int)i, ... __attribute__((sentinel(0,1)));
    101 @end
    102 void f(Ellipsis *e) {
    103   [e Method:1, 2, 3];
    104 }
    105 
    106 @interface Overload2
    107 + (int)Method:(int)i;
    108 + (int)Method;
    109 + (int)Method:(float)f Arg1:(int)i1 Arg2:(int)i2;
    110 + (int)Method:(float)f Arg1:(int)i1 OtherArg:(id)obj;
    111 + (int)Method:(float)f SomeArg:(int)i1 OtherArg:(id)obj;
    112 + (int)OtherMethod:(float)f Arg1:(int)i1 Arg2:(int)i2;
    113 @end
    114 
    115 void test_overload2(void) {
    116   [Overload2 Method:1 Arg1:1 OtherArg:ovl];
    117 }
    118 
    119 void msg_id(id x) {
    120   [x Method:1 Arg1:1 OtherArg:ovl];
    121   [[x blarg] Method:1 Arg1:1 OtherArg:ovl];
    122   [id Method:1 Arg1:1 OtherArg:ovl];
    123 }
    124 
    125 @interface A
    126 - (void)method1;
    127 @end 
    128 
    129 @interface B : A
    130 - (void)method2;
    131 @end
    132 
    133 void test_ranking(B *b) {
    134   [b method1];
    135   b method1];
    136 }
    137 
    138 void test_overload3(Overload *ovl) {
    139   ovl Method:1 Arg1:1 OtherArg:ovl];
    140    Overload2 Method:1 Arg1:1 OtherArg:ovl];
    141   (Overload2 Method:1 Arg1:1 OtherArg:ovl]);
    142 }
    143 
    144 @interface C : B
    145 - (void)method2;
    146 - (void)method3;
    147 @end
    148 
    149 void test_redundancy(C *c) {
    150   [c method2];
    151 };
    152 
    153 @protocol P
    154 - (Class)class;
    155 @end
    156 
    157 @interface A () <P>
    158 @end
    159 
    160 @interface A ()
    161 + (void)class_method3;
    162 @end
    163 
    164 @interface A (Cat)
    165 + (void)class_method4;
    166 @end
    167 
    168 @implementation A
    169 - (void)method5:(A*)a {
    170   [[self class] class_method4];
    171 }
    172 @end
    173 
    174 void test_missing_open_more() {
    175   A *a = A class_method3];
    176 }
    177 
    178 void test_block_invoke(A *(^block1)(int), 
    179                        int (^block2)(int), 
    180                        id (^block3)(int)) {
    181   [block1(5) init];
    182 }
    183 
    184 @interface DO
    185 - (void)method:(in bycopy A*)ain result:(out byref A**)aout;
    186 @end
    187 
    188 void test_DO(DO *d, A* a) {
    189   [d method:a aout:&a];
    190 }
    191 
    192 // RUN: c-index-test -code-completion-at=%s:23:19 %s | FileCheck -check-prefix=CHECK-CC1 %s
    193 // CHECK-CC1: {TypedText categoryClassMethod} (35)
    194 // CHECK-CC1: {TypedText classMethod1:}{Placeholder (id)}{HorizontalSpace  }{TypedText withKeyword:}{Placeholder (int)} (35)
    195 // CHECK-CC1: {TypedText classMethod2} (35)
    196 // CHECK-CC1: {TypedText instanceMethod1} (35)
    197 // CHECK-CC1: {TypedText new} (35)
    198 // CHECK-CC1: {TypedText protocolClassMethod} (37)
    199 // CHECK-CC1: Completion contexts:
    200 // CHECK-CC1-NEXT: Objective-C class method
    201 // CHECK-CC1-NEXT: Container Kind: ObjCInterfaceDecl
    202 // CHECK-CC1-NEXT: Container is complete
    203 // CHECK-CC1-NEXT: Container USR: c:objc(cs)Foo
    204 // RUN: c-index-test -code-completion-at=%s:24:8 %s | FileCheck -check-prefix=CHECK-CC2 %s
    205 // CHECK-CC2: {TypedText categoryInstanceMethod}
    206 // CHECK-CC2: {TypedText instanceMethod1}
    207 // CHECK-CC2: {TypedText protocolInstanceMethod:}{Placeholder (int)}
    208 // CHECK-CC2: Completion contexts:
    209 // CHECK-CC2-NEXT: Objective-C instance method
    210 // CHECK-CC2-NEXT: Container Kind: ObjCInterfaceDecl
    211 // CHECK-CC2-NEXT: Container is complete
    212 // CHECK-CC2-NEXT: Container USR: c:objc(cs)Foo
    213 // RUN: c-index-test -code-completion-at=%s:61:16 %s | FileCheck -check-prefix=CHECK-CC3 %s
    214 // CHECK-CC3: ObjCClassMethodDecl:{ResultType int}{TypedText MyClassMethod:}{Placeholder (id)}
    215 // CHECK-CC3: ObjCClassMethodDecl:{ResultType int}{TypedText MyPrivateMethod}
    216 // RUN: c-index-test -code-completion-at=%s:65:16 %s | FileCheck -check-prefix=CHECK-CC4 %s
    217 // CHECK-CC4: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)}{HorizontalSpace  }{TypedText second:}{Placeholder (id)}
    218 // CHECK-CC4: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyPrivateInstMethod}
    219 // RUN: c-index-test -code-completion-at=%s:74:9 %s | FileCheck -check-prefix=CHECK-CC5 %s
    220 // CHECK-CC5: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)}{HorizontalSpace  }{TypedText second:}{Placeholder (id)}
    221 // CHECK-CC5: ObjCInstanceMethodDecl:{ResultType int}{TypedText MySubInstMethod}
    222 // RUN: c-index-test -code-completion-at=%s:82:8 %s | FileCheck -check-prefix=CHECK-CC6 %s
    223 // CHECK-CC6: ObjCInstanceMethodDecl:{ResultType id}{TypedText protocolInstanceMethod:}{Placeholder (int)}
    224 // CHECK-CC6: ObjCInstanceMethodDecl:{ResultType int}{TypedText secondProtocolInstanceMethod}
    225 // RUN: c-index-test -code-completion-at=%s:95:8 %s | FileCheck -check-prefix=CHECK-CC7 %s
    226 // CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method}
    227 // CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)}
    228 // CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
    229 // CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
    230 // CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace  }{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
    231 // CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
    232 // RUN: c-index-test -code-completion-at=%s:95:17 %s | FileCheck -check-prefix=CHECK-CC8 %s
    233 // CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
    234 // CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
    235 // CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
    236 // CHECK-CC8-NOT: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText }
    237 // RUN: c-index-test -code-completion-at=%s:95:24 %s | FileCheck -check-prefix=CHECK-CC9 %s
    238 // CHECK-CC9: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText Arg2:}{Placeholder (int)}
    239 // CHECK-CC9: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText OtherArg:}{Placeholder (id)}
    240 // CHECK-CC9: Objective-C selector: Method:Arg1:
    241 // RUN: c-index-test -code-completion-at=%s:61:11 %s | FileCheck -check-prefix=CHECK-CCA %s
    242 // CHECK-CCA: TypedefDecl:{TypedText Class} (50)
    243 // CHECK-CCA-NEXT: ObjCInterfaceDecl:{TypedText Foo} (50)
    244 // CHECK-CCA-NOT: FunctionDecl:{ResultType void}{TypedText func}{LeftParen (}{RightParen )} (50)
    245 // CHECK-CCA:FunctionDecl:{ResultType MyClass *}{TypedText getMyClass}{LeftParen (}{RightParen )} (50)
    246 // CHECK-CCA: TypedefDecl:{TypedText id} (50)
    247 // CHECK-CCA: ObjCInterfaceDecl:{TypedText MyClass} (50)
    248 // CHECK-CCA: ObjCInterfaceDecl:{TypedText MySubClass} (50)
    249 // CHECK-CCA: {ResultType Class}{TypedText self} (34)
    250 // CHECK-CCA: {TypedText super} (40)
    251 // RUN: c-index-test -code-completion-at=%s:103:6 %s | FileCheck -check-prefix=CHECK-CCB %s
    252 // CHECK-CCB: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int), ...}
    253 // CHECK-CCB: ObjCInstanceMethodDecl:{ResultType int}{TypedText SentinelMethod:}{Placeholder (int), ...}{Text , nil}
    254 // RUN: c-index-test -code-completion-at=%s:116:14 %s | FileCheck -check-prefix=CHECK-CCC %s
    255 // CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method}
    256 // CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)}
    257 // CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
    258 // CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
    259 // CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace  }{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
    260 // CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
    261 // RUN: c-index-test -code-completion-at=%s:116:23 %s | FileCheck -check-prefix=CHECK-CCD %s
    262 // CHECK-CCD: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
    263 // CHECK-CCD: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
    264 // CHECK-CCD: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
    265 // CHECK-CCD-NOT: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText }
    266 // CHECK-CCD: Objective-C selector: Method:
    267 // RUN: c-index-test -code-completion-at=%s:116:30 %s | FileCheck -check-prefix=CHECK-CCE %s
    268 // CHECK-CCE: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText Arg2:}{Placeholder (int)}
    269 // CHECK-CCE: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText OtherArg:}{Placeholder (id)}
    270 // RUN: c-index-test -code-completion-at=%s:61:11 %s | FileCheck -check-prefix=CHECK-CCF %s
    271 // CHECK-CCF: TypedefDecl:{TypedText Class}
    272 // CHECK-CCF: ObjCInterfaceDecl:{TypedText Foo}
    273 // CHECK-CCF-NOT: FunctionDecl:{ResultType void}{TypedText func}{LeftParen (}{RightParen )}
    274 // CHECK-CCF: TypedefDecl:{TypedText id}
    275 // CHECK-CCF: ObjCInterfaceDecl:{TypedText MyClass}
    276 // CHECK-CCF: ObjCInterfaceDecl:{TypedText MySubClass}
    277 // CHECK-CCF: {ResultType Class}{TypedText self}
    278 // CHECK-CCF: {TypedText super}
    279 // RUN: c-index-test -code-completion-at=%s:120:6 %s | FileCheck -check-prefix=CHECK-CCG %s
    280 // CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText categoryInstanceMethod}
    281 // CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText instanceMethod1}
    282 // CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method}
    283 // CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)}{HorizontalSpace  }{TypedText second:}{Placeholder (id)}
    284 // CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyPrivateInstMethod}
    285 // CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MySubInstMethod}
    286 // CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText protocolInstanceMethod:}{Placeholder (int)}
    287 // CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText secondProtocolInstanceMethod}
    288 // RUN: c-index-test -code-completion-at=%s:121:14 %s | FileCheck -check-prefix=CHECK-CCG %s
    289 // RUN: c-index-test -code-completion-at=%s:122:7 %s | FileCheck -check-prefix=CHECK-CCH %s
    290 // CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText categoryClassMethod}
    291 // CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText classMethod1:}{Placeholder (id)}{HorizontalSpace  }{TypedText withKeyword:}{Placeholder (int)}
    292 // CHECK-CCH: ObjCClassMethodDecl:{ResultType void}{TypedText classMethod2}
    293 // CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText Method}
    294 // CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)}
    295 // CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MyClassMethod:}{Placeholder (id)}
    296 // CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MyPrivateMethod}
    297 // CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MySubClassMethod}
    298 // CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MySubPrivateMethod}
    299 // CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText new}
    300 // CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
    301 // CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText protocolClassMethod}
    302 // RUN: c-index-test -code-completion-at=%s:134:6 %s | FileCheck -check-prefix=CHECK-CCI %s
    303 // CHECK-CCI: ObjCInstanceMethodDecl:{ResultType void}{TypedText method1} (37)
    304 // CHECK-CCI: ObjCInstanceMethodDecl:{ResultType void}{TypedText method2} (35)
    305 
    306 // RUN: c-index-test -code-completion-at=%s:150:5 %s | FileCheck -check-prefix=CHECK-REDUNDANT %s
    307 // CHECK-REDUNDANT: ObjCInstanceMethodDecl:{ResultType void}{TypedText method2} (35)
    308 // CHECK-REDUNDANT-NOT: ObjCInstanceMethodDecl:{ResultType void}{TypedText method2}
    309 // CHECK-REDUNDANT: ObjCInstanceMethodDecl:{ResultType void}{TypedText method3} (35)
    310 
    311 // RUN: c-index-test -code-completion-at=%s:170:16 %s | FileCheck -check-prefix=CHECK-CLASS-RESULT %s
    312 // CHECK-CLASS-RESULT: ObjCClassMethodDecl:{ResultType void}{TypedText class_method3} (35)
    313 // CHECK-CLASS-RESULT: ObjCClassMethodDecl:{ResultType void}{TypedText class_method4} (35)
    314 
    315 // RUN: c-index-test -code-completion-at=%s:181:4 %s | FileCheck -check-prefix=CHECK-BLOCK-RECEIVER %s
    316 // CHECK-BLOCK-RECEIVER: ObjCInterfaceDecl:{TypedText A} (50)
    317 // CHECK-BLOCK-RECEIVER: ObjCInterfaceDecl:{TypedText B} (50)
    318 // CHECK-BLOCK-RECEIVER: ParmDecl:{ResultType A *(^)(int)}{TypedText block1} (34)
    319 // CHECK-BLOCK-RECEIVER-NEXT: ParmDecl:{ResultType id (^)(int)}{TypedText block3} (34)
    320 
    321 // Test code completion with a missing opening bracket:
    322 // RUN: c-index-test -code-completion-at=%s:135:5 %s | FileCheck -check-prefix=CHECK-CCI %s
    323 // RUN: c-index-test -code-completion-at=%s:139:7 %s | FileCheck -check-prefix=CHECK-CC7 %s
    324 // RUN: c-index-test -code-completion-at=%s:139:16 %s | FileCheck -check-prefix=CHECK-CC8 %s
    325 // RUN: c-index-test -code-completion-at=%s:139:23 %s | FileCheck -check-prefix=CHECK-CC9 %s
    326 
    327 // RUN: c-index-test -code-completion-at=%s:140:14 %s | FileCheck -check-prefix=CHECK-CCC %s
    328 // RUN: c-index-test -code-completion-at=%s:140:23 %s | FileCheck -check-prefix=CHECK-CCD %s
    329 // RUN: c-index-test -code-completion-at=%s:140:30 %s | FileCheck -check-prefix=CHECK-CCE %s
    330 // RUN: c-index-test -code-completion-at=%s:141:14 %s | FileCheck -check-prefix=CHECK-CCC %s
    331 // RUN: c-index-test -code-completion-at=%s:141:23 %s | FileCheck -check-prefix=CHECK-CCD %s
    332 // RUN: c-index-test -code-completion-at=%s:141:30 %s | FileCheck -check-prefix=CHECK-CCE %s
    333 
    334 // RUN: c-index-test -code-completion-at=%s:175:12 %s | FileCheck -check-prefix=CHECK-CLASS-RESULT %s
    335 
    336 // RUN: c-index-test -code-completion-at=%s:189:6 %s | FileCheck -check-prefix=CHECK-DISTRIB-OBJECTS %s
    337 // CHECK-DISTRIB-OBJECTS: ObjCInstanceMethodDecl:{ResultType void}{TypedText method:}{Placeholder (in bycopy A *)}{HorizontalSpace  }{TypedText result:}{Placeholder (out byref A **)} (35)
    338