| // RUN: %clang_cc1 -ast-print -x objective-c++ -fms-extensions %s -o - | FileCheck %s |
| |
| // CHECK: using A = __kindof id (*)[1]; |
| using A = __kindof id (*)[1]; |
| |
| // CHECK: using B = int ** __ptr32 *[3]; |
| using B = int ** __ptr32 *[3]; |
| |
| // FIXME: This is the wrong spelling for the attribute. |
| // FIXME: Too many parens here! |
| // CHECK: using C = int ((*))() __attribute__((cdecl)); |
| using C = int (*)() [[gnu::cdecl]]; |
| |
| // CHECK: int fun_asm() asm("test"); |
| int fun_asm() asm("test"); |
| // CHECK: int var_asm asm("test"); |
| int var_asm asm("test"); |
| |
| |
| @interface NSString |
| @end |
| |
| extern NSString *const MyErrorDomain; |
| // CHECK: enum __attribute__((ns_error_domain(MyErrorDomain))) MyErrorEnum { |
| enum __attribute__((ns_error_domain(MyErrorDomain))) MyErrorEnum { |
| MyErrFirst, |
| MyErrSecond, |
| }; |
| |
| // CHECK: int *fun_returns() __attribute__((ownership_returns(fun_returns))); |
| int *fun_returns() __attribute__((ownership_returns(fun_returns))); |
| |
| // CHECK: void fun_holds(int *a) __attribute__((ownership_holds(fun_holds, 1))); |
| void fun_holds(int *a) __attribute__((ownership_holds(fun_holds, 1))); |