69 lines · plain
1// Test without serialization:2// RUN: %clang_cc1 -triple x86_64-apple-macosx10.10.0 \3// RUN: -ast-dump -ast-dump-filter Test %s \4// RUN: | FileCheck --strict-whitespace %s5//6// Test with serialization:7// RUN: %clang_cc1 -triple x86_64-apple-macosx10.10.0 \8// RUN: -emit-pch -o %t %s9// RUN: %clang_cc1 -x objective-c -triple x86_64-apple-macosx10.10.0 \10// RUN: -include-pch %t -ast-dump-all -ast-dump-filter Test /dev/null \11// RUN: | sed -e "s/ <undeserialized declarations>//" -e "s/ imported//" \12// RUN: | FileCheck --strict-whitespace %s13 14@interface NSObject15@end16 17[[clang::objc_exception]]18@interface Test1 {19// CHECK: ObjCInterfaceDecl{{.*}} Test120// CHECK-NEXT: ObjCExceptionAttr{{.*}}21 [[clang::iboutlet]] NSObject *Test2;22// CHECK: ObjCIvarDecl{{.*}} Test223// CHECK-NEXT: IBOutletAttr24}25@property (readonly) [[clang::objc_returns_inner_pointer]] void *Test3, *Test4;26// CHECK: ObjCPropertyDecl{{.*}} Test3 'void *' readonly27// CHECK-NEXT: ObjCReturnsInnerPointerAttr28// CHECK-NEXT: ObjCPropertyDecl{{.*}} Test4 'void *' readonly29// CHECK-NEXT: ObjCReturnsInnerPointerAttr30 31@property (readonly) [[clang::iboutlet]] NSObject *Test5;32// CHECK: ObjCPropertyDecl{{.*}} Test5 'NSObject *' readonly33// CHECK-NEXT: IBOutletAttr34 35// CHECK: ObjCMethodDecl{{.*}} implicit{{.*}} Test336// CHECK-NEXT: ObjCReturnsInnerPointerAttr37// CHECK: ObjCMethodDecl{{.*}} implicit{{.*}} Test438// CHECK-NEXT: ObjCReturnsInnerPointerAttr39// CHECK: ObjCMethodDecl{{.*}} implicit{{.*}} Test540// CHECK-NOT: IBOutletAttr41@end42 43[[clang::objc_runtime_name("name")]] @protocol Test6;44// CHECK: ObjCProtocolDecl{{.*}} Test645// CHECK-NEXT: ObjCRuntimeNameAttr{{.*}} "name"46 47[[clang::objc_protocol_requires_explicit_implementation]]48@protocol Test749// CHECK: ObjCProtocolDecl{{.*}} Test750// CHECK-NEXT: ObjCExplicitProtocolImplAttr51@end52 53@interface Test854// CHECK: ObjCInterfaceDecl{{.*}} Test855-(void)Test9 [[clang::ns_consumes_self]];56// CHECK: ObjCMethodDecl{{.*}} Test9 'void'57// CHECK-NEXT: NSConsumesSelfAttr58-(void) [[clang::ns_consumes_self]] Test10: (int)Test11;59// CHECK: ObjCMethodDecl{{.*}} Test10: 'void'60// CHECK-NEXT: |-ParmVarDecl{{.*}} Test11 'int'61// CHECK-NEXT: `-NSConsumesSelfAttr62-(void)Test12: (int *) [[clang::noescape]] Test13 to:(int)Test14 [[clang::ns_consumes_self]];63// CHECK: ObjCMethodDecl{{.*}} Test12:to: 'void'64// CHECK-NEXT: |-ParmVarDecl{{.*}} Test13 'int *'65// CHECK-NEXT: | `-NoEscapeAttr66// CHECK-NEXT: |-ParmVarDecl{{.*}} Test14 'int'67// CHECK-NEXT: `-NSConsumesSelfAttr68@end69