forked from OSchip/llvm-project
58 lines
2.1 KiB
Objective-C
58 lines
2.1 KiB
Objective-C
// 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
|
|
|
|
@interface NSObject
|
|
@end
|
|
|
|
[[clang::objc_exception]]
|
|
@interface Test1 {
|
|
// CHECK: ObjCInterfaceDecl{{.*}} Test1
|
|
// CHECK-NEXT: ObjCExceptionAttr{{.*}}
|
|
[[clang::iboutlet]] NSObject *Test2;
|
|
// CHECK: ObjCIvarDecl{{.*}} Test2
|
|
// CHECK-NEXT: IBOutletAttr
|
|
}
|
|
@property (readonly) [[clang::objc_returns_inner_pointer]] void *Test3, *Test4;
|
|
// CHECK: ObjCPropertyDecl{{.*}} Test3 'void *' readonly
|
|
// CHECK-NEXT: ObjCReturnsInnerPointerAttr
|
|
// CHECK-NEXT: ObjCPropertyDecl{{.*}} Test4 'void *' readonly
|
|
// CHECK-NEXT: ObjCReturnsInnerPointerAttr
|
|
|
|
@property (readonly) [[clang::iboutlet]] NSObject *Test5;
|
|
// CHECK: ObjCPropertyDecl{{.*}} Test5 'NSObject *' readonly
|
|
// CHECK-NEXT: IBOutletAttr
|
|
|
|
// CHECK: ObjCMethodDecl{{.*}} implicit{{.*}} Test3
|
|
// CHECK-NEXT: ObjCReturnsInnerPointerAttr
|
|
// CHECK: ObjCMethodDecl{{.*}} implicit{{.*}} Test4
|
|
// CHECK-NEXT: ObjCReturnsInnerPointerAttr
|
|
// CHECK: ObjCMethodDecl{{.*}} implicit{{.*}} Test5
|
|
// CHECK-NOT: IBOutletAttr
|
|
@end
|
|
|
|
[[clang::objc_runtime_name("name")]] @protocol Test6;
|
|
// CHECK: ObjCProtocolDecl{{.*}} Test6
|
|
// CHECK-NEXT: ObjCRuntimeNameAttr{{.*}} "name"
|
|
|
|
[[clang::objc_protocol_requires_explicit_implementation]]
|
|
@protocol Test7
|
|
// CHECK: ObjCProtocolDecl{{.*}} Test7
|
|
// CHECK-NEXT: ObjCExplicitProtocolImplAttr
|
|
@end
|
|
|
|
@interface Test8
|
|
// CHECK: ObjCInterfaceDecl{{.*}} Test8
|
|
-(void)Test9 [[clang::ns_consumes_self]];
|
|
// CHECK: ObjCMethodDecl{{.*}} Test9 'void'
|
|
// CHECK-NEXT: NSConsumesSelfAttr
|
|
-(void) [[clang::ns_consumes_self]] Test10: (int)Test11;
|
|
// CHECK: ObjCMethodDecl{{.*}} Test10: 'void'
|
|
// CHECK-NEXT: |-ParmVarDecl{{.*}} Test11 'int'
|
|
// CHECK-NEXT: `-NSConsumesSelfAttr
|
|
-(void)Test12: (int *) [[clang::noescape]] Test13 to:(int)Test14 [[clang::ns_consumes_self]];
|
|
// CHECK: ObjCMethodDecl{{.*}} Test12:to: 'void'
|
|
// CHECK-NEXT: |-ParmVarDecl{{.*}} Test13 'int *'
|
|
// CHECK-NEXT: | `-NoEscapeAttr
|
|
// CHECK-NEXT: |-ParmVarDecl{{.*}} Test14 'int'
|
|
// CHECK-NEXT: `-NSConsumesSelfAttr
|
|
@end
|