1932949dbSEgor Zhdan // RUN: rm -rf %t && mkdir -p %t 2932949dbSEgor Zhdan // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -fsyntax-only -I %S/Inputs/Headers %s -x c++ 37c1d9b15SFangrui Song // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -I %S/Inputs/Headers %s -x c++ -ast-dump -ast-dump-filter ImmortalRefType | FileCheck -check-prefix=CHECK-IMMORTAL %s 47c1d9b15SFangrui Song // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -I %S/Inputs/Headers %s -x c++ -ast-dump -ast-dump-filter RefCountedType | FileCheck -check-prefix=CHECK-REF-COUNTED %s 57c1d9b15SFangrui Song // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -I %S/Inputs/Headers %s -x c++ -ast-dump -ast-dump-filter NonCopyableType | FileCheck -check-prefix=CHECK-NON-COPYABLE %s 67c1d9b15SFangrui Song // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -I %S/Inputs/Headers %s -x c++ -ast-dump -ast-dump-filter CopyableType | FileCheck -check-prefix=CHECK-COPYABLE %s 7d2db9bd7SGábor Horváth // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -I %S/Inputs/Headers %s -x c++ -ast-dump -ast-dump-filter NonEscapableType | FileCheck -check-prefix=CHECK-NON-ESCAPABLE %s 8d2db9bd7SGábor Horváth // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -I %S/Inputs/Headers %s -x c++ -ast-dump -ast-dump-filter EscapableType | FileCheck -check-prefix=CHECK-ESCAPABLE %s 9*48f7f63aSfahadnayyar // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -I %S/Inputs/Headers %s -x c++ -ast-dump -ast-dump-filter functionReturningFrt__ | FileCheck -check-prefix=CHECK-FUNCTION-RETURNING-FRT %s 10*48f7f63aSfahadnayyar // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -I %S/Inputs/Headers %s -x c++ -ast-dump -ast-dump-filter functionReturningFrt_returns_unretained | FileCheck -check-prefix=CHECK-FUNCTION-RETURNING-FRT-UNRETAINED %s 11*48f7f63aSfahadnayyar // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -I %S/Inputs/Headers %s -x c++ -ast-dump -ast-dump-filter functionReturningFrt_returns_retained | FileCheck -check-prefix=CHECK-FUNCTION-RETURNING-FRT-RETAINED %s 12*48f7f63aSfahadnayyar // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -I %S/Inputs/Headers %s -x c++ -ast-dump -ast-dump-filter methodReturningFrt__ | FileCheck -check-prefix=CHECK-METHOD-RETURNING-FRT %s 13*48f7f63aSfahadnayyar // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -I %S/Inputs/Headers %s -x c++ -ast-dump -ast-dump-filter methodReturningFrt_returns_unretained | FileCheck -check-prefix=CHECK-METHOD-RETURNING-FRT-UNRETAINED %s 14*48f7f63aSfahadnayyar // RUN: %clang_cc1 -fmodules -fblocks -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -I %S/Inputs/Headers %s -x c++ -ast-dump -ast-dump-filter methodReturningFrt_returns_retained | FileCheck -check-prefix=CHECK-METHOD-RETURNING-FRT-RETAINED %s 15932949dbSEgor Zhdan 16932949dbSEgor Zhdan #include <SwiftImportAs.h> 17932949dbSEgor Zhdan 18932949dbSEgor Zhdan // CHECK-IMMORTAL: Dumping ImmortalRefType: 19932949dbSEgor Zhdan // CHECK-IMMORTAL-NEXT: CXXRecordDecl {{.+}} imported in SwiftImportAs {{.+}} struct ImmortalRefType 20932949dbSEgor Zhdan // CHECK-IMMORTAL: SwiftAttrAttr {{.+}} <<invalid sloc>> "import_reference" 21932949dbSEgor Zhdan 22932949dbSEgor Zhdan // CHECK-REF-COUNTED: Dumping RefCountedType: 23932949dbSEgor Zhdan // CHECK-REF-COUNTED-NEXT: CXXRecordDecl {{.+}} imported in SwiftImportAs {{.+}} struct RefCountedType 24932949dbSEgor Zhdan // CHECK-REF-COUNTED: SwiftAttrAttr {{.+}} <<invalid sloc>> "import_reference" 25932949dbSEgor Zhdan // CHECK-REF-COUNTED: SwiftAttrAttr {{.+}} <<invalid sloc>> "retain:RCRetain" 26932949dbSEgor Zhdan // CHECK-REF-COUNTED: SwiftAttrAttr {{.+}} <<invalid sloc>> "release:RCRelease" 27dc8c217dSEgor Zhdan // CHECK-REF-COUNTED: SwiftAttrAttr {{.+}} <<invalid sloc>> "conforms_to:MySwiftModule.MySwiftRefCountedProtocol" 28b2098db2SEgor Zhdan 29b2098db2SEgor Zhdan // CHECK-NON-COPYABLE: Dumping NonCopyableType: 30b2098db2SEgor Zhdan // CHECK-NON-COPYABLE-NEXT: CXXRecordDecl {{.+}} imported in SwiftImportAs {{.+}} struct NonCopyableType 31dc8c217dSEgor Zhdan // CHECK-NON-COPYABLE: SwiftAttrAttr {{.+}} <<invalid sloc>> "conforms_to:MySwiftModule.MySwiftNonCopyableProtocol" 32b2098db2SEgor Zhdan // CHECK-NON-COPYABLE: SwiftAttrAttr {{.+}} <<invalid sloc>> "~Copyable" 33b2098db2SEgor Zhdan 34b2098db2SEgor Zhdan // CHECK-COPYABLE: Dumping CopyableType: 35b2098db2SEgor Zhdan // CHECK-COPYABLE-NEXT: CXXRecordDecl {{.+}} imported in SwiftImportAs {{.+}} struct CopyableType 36b2098db2SEgor Zhdan // CHECK-COPYABLE-NOT: SwiftAttrAttr 37d2db9bd7SGábor Horváth 38d2db9bd7SGábor Horváth // CHECK-NON-ESCAPABLE: Dumping NonEscapableType: 39d2db9bd7SGábor Horváth // CHECK-NON-ESCAPABLE-NEXT: CXXRecordDecl {{.+}} imported in SwiftImportAs {{.+}} struct NonEscapableType 40d2db9bd7SGábor Horváth // CHECK-NON-ESCAPABLE: SwiftAttrAttr {{.+}} "~Escapable" 41d2db9bd7SGábor Horváth 42d2db9bd7SGábor Horváth // CHECK-ESCAPABLE: Dumping EscapableType: 43d2db9bd7SGábor Horváth // CHECK-ESCAPABLE-NEXT: CXXRecordDecl {{.+}} imported in SwiftImportAs {{.+}} struct EscapableType 44d2db9bd7SGábor Horváth // CHECK-ESCAPABLE: SwiftAttrAttr {{.+}} "Escapable" 45*48f7f63aSfahadnayyar 46*48f7f63aSfahadnayyar // CHECK-FUNCTION-RETURNING-FRT: Dumping functionReturningFrt__: 47*48f7f63aSfahadnayyar // CHECK-FUNCTION-RETURNING-FRT: FunctionDecl {{.+}} imported in SwiftImportAs functionReturningFrt__ 'ImmortalRefType *()' 48*48f7f63aSfahadnayyar // CHECK-FUNCTION-RETURNING-FRT-NOT: `-SwiftAttrAttr {{.+}} "returns_unretained" 49*48f7f63aSfahadnayyar // CHECK-FUNCTION-RETURNING-FRT-NOT: `-SwiftAttrAttr {{.+}} "returns_retained" 50*48f7f63aSfahadnayyar 51*48f7f63aSfahadnayyar // CHECK-FUNCTION-RETURNING-FRT-UNRETAINED: Dumping functionReturningFrt_returns_unretained: 52*48f7f63aSfahadnayyar // CHECK-FUNCTION-RETURNING-FRT-UNRETAINED: FunctionDecl {{.+}} imported in SwiftImportAs functionReturningFrt_returns_unretained 'ImmortalRefType *()' 53*48f7f63aSfahadnayyar // CHECK-FUNCTION-RETURNING-FRT-UNRETAINED: `-SwiftAttrAttr {{.+}} "returns_unretained" 54*48f7f63aSfahadnayyar 55*48f7f63aSfahadnayyar // CHECK-FUNCTION-RETURNING-FRT-RETAINED: Dumping functionReturningFrt_returns_retained: 56*48f7f63aSfahadnayyar // CHECK-FUNCTION-RETURNING-FRT-RETAINED: FunctionDecl {{.+}} imported in SwiftImportAs functionReturningFrt_returns_retained 'ImmortalRefType *()' 57*48f7f63aSfahadnayyar // CHECK-FUNCTION-RETURNING-FRT-RETAINED: `-SwiftAttrAttr {{.+}} "returns_retained" 58*48f7f63aSfahadnayyar 59*48f7f63aSfahadnayyar // CHECK-METHOD-RETURNING-FRT: Dumping ImmortalRefType::methodReturningFrt__: 60*48f7f63aSfahadnayyar // CHECK-METHOD-RETURNING-FRT: CXXMethodDecl {{.+}} imported in SwiftImportAs methodReturningFrt__ 'ImmortalRefType *()' 61*48f7f63aSfahadnayyar // CHECK-METHOD-RETURNING-FRT-NOT: `-SwiftAttrAttr {{.+}} "returns_unretained" 62*48f7f63aSfahadnayyar // CHECK-METHOD-RETURNING-FRT-NOT: `-SwiftAttrAttr {{.+}} "returns_retained" 63*48f7f63aSfahadnayyar 64*48f7f63aSfahadnayyar // CHECK-METHOD-RETURNING-FRT-UNRETAINED: Dumping ImmortalRefType::methodReturningFrt_returns_unretained: 65*48f7f63aSfahadnayyar // CHECK-METHOD-RETURNING-FRT-UNRETAINED: CXXMethodDecl {{.+}} imported in SwiftImportAs methodReturningFrt_returns_unretained 'ImmortalRefType *()' 66*48f7f63aSfahadnayyar // CHECK-METHOD-RETURNING-FRT-UNRETAINED: `-SwiftAttrAttr {{.+}} "returns_unretained" 67*48f7f63aSfahadnayyar 68*48f7f63aSfahadnayyar // CHECK-METHOD-RETURNING-FRT-RETAINED: Dumping ImmortalRefType::methodReturningFrt_returns_retained: 69*48f7f63aSfahadnayyar // CHECK-METHOD-RETURNING-FRT-RETAINED: CXXMethodDecl {{.+}} imported in SwiftImportAs methodReturningFrt_returns_retained 'ImmortalRefType *()' 70*48f7f63aSfahadnayyar // CHECK-METHOD-RETURNING-FRT-RETAINED: `-SwiftAttrAttr {{.+}} "returns_retained" 71