]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/AST/ast-dump-attr.m
Vendor import of clang trunk r338536:
[FreeBSD/FreeBSD.git] / test / AST / ast-dump-attr.m
1 // RUN: %clang_cc1 -fdouble-square-bracket-attributes -triple x86_64-apple-macosx10.10.0 -ast-dump -ast-dump-filter Test %s | FileCheck --strict-whitespace %s\r
2 \r
3 @interface NSObject\r
4 @end\r
5 \r
6 [[clang::objc_exception]]\r
7 @interface Test1 {\r
8 // CHECK: ObjCInterfaceDecl{{.*}} Test1\r
9 // CHECK-NEXT: ObjCExceptionAttr{{.*}}\r
10   [[clang::iboutlet]] NSObject *Test2;\r
11 // CHECK: ObjCIvarDecl{{.*}} Test2\r
12 // CHECK-NEXT: IBOutletAttr\r
13 }\r
14 @property (readonly) [[clang::objc_returns_inner_pointer]] void *Test3, *Test4;\r
15 // CHECK: ObjCPropertyDecl{{.*}} Test3 'void *' readonly\r
16 // CHECK-NEXT: ObjCReturnsInnerPointerAttr\r
17 // CHECK-NEXT: ObjCPropertyDecl{{.*}} Test4 'void *' readonly\r
18 // CHECK-NEXT: ObjCReturnsInnerPointerAttr\r
19 \r
20 @property (readonly) [[clang::iboutlet]] NSObject *Test5;\r
21 // CHECK: ObjCPropertyDecl{{.*}} Test5 'NSObject *' readonly\r
22 // CHECK-NEXT: IBOutletAttr\r
23 \r
24 // CHECK: ObjCMethodDecl{{.*}} implicit{{.*}} Test3\r
25 // CHECK-NEXT: ObjCReturnsInnerPointerAttr\r
26 // CHECK: ObjCMethodDecl{{.*}} implicit{{.*}} Test4\r
27 // CHECK-NEXT: ObjCReturnsInnerPointerAttr\r
28 // CHECK: ObjCMethodDecl{{.*}} implicit{{.*}} Test5\r
29 // CHECK-NOT: IBOutletAttr\r
30 @end\r
31 \r
32 [[clang::objc_runtime_name("name")]] @protocol Test6;\r
33 // CHECK: ObjCProtocolDecl{{.*}} Test6\r
34 // CHECK-NEXT: ObjCRuntimeNameAttr{{.*}} "name"\r
35 \r
36 [[clang::objc_protocol_requires_explicit_implementation]]\r
37 @protocol Test7\r
38 // CHECK: ObjCProtocolDecl{{.*}} Test7\r
39 // CHECK-NEXT: ObjCExplicitProtocolImplAttr\r
40 @end\r
41 \r
42 @interface Test8\r
43 // CHECK: ObjCInterfaceDecl{{.*}} Test8\r
44 -(void)Test9 [[clang::ns_consumes_self]];\r
45 // CHECK: ObjCMethodDecl{{.*}} Test9 'void'\r
46 // CHECK-NEXT: NSConsumesSelfAttr\r
47 -(void) [[clang::ns_consumes_self]] Test10: (int)Test11;\r
48 // CHECK: ObjCMethodDecl{{.*}} Test10: 'void'\r
49 // CHECK-NEXT: |-ParmVarDecl{{.*}} Test11 'int'\r
50 // CHECK-NEXT: `-NSConsumesSelfAttr\r
51 -(void)Test12: (int *) [[clang::noescape]] Test13  to:(int)Test14 [[clang::ns_consumes_self]];\r
52 // CHECK: ObjCMethodDecl{{.*}} Test12:to: 'void'\r
53 // CHECK-NEXT: |-ParmVarDecl{{.*}} Test13 'int *'\r
54 // CHECK-NEXT: | `-NoEscapeAttr\r
55 // CHECK-NEXT: |-ParmVarDecl{{.*}} Test14 'int'\r
56 // CHECK-NEXT: `-NSConsumesSelfAttr\r
57 @end\r