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
6 [[clang::objc_exception]]
\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
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
20 @property (readonly) [[clang::iboutlet]] NSObject *Test5;
\r
21 // CHECK: ObjCPropertyDecl{{.*}} Test5 'NSObject *' readonly
\r
22 // CHECK-NEXT: IBOutletAttr
\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
32 [[clang::objc_runtime_name("name")]] @protocol Test6;
\r
33 // CHECK: ObjCProtocolDecl{{.*}} Test6
\r
34 // CHECK-NEXT: ObjCRuntimeNameAttr{{.*}} "name"
\r
36 [[clang::objc_protocol_requires_explicit_implementation]]
\r
38 // CHECK: ObjCProtocolDecl{{.*}} Test7
\r
39 // CHECK-NEXT: ObjCExplicitProtocolImplAttr
\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