/// Include module for use from both C and Objective-C @c variants. // RUN: %empty-directory(%t) // RUN: split-file %s %t --leading-lines /// Generate the compatibility header cdecl.h // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %t/Lib.swift \ // RUN: -emit-module -o %t -verify -F %t \ // RUN: -emit-clang-header-path %t/cdecl.h /// Check compatibility header directly // RUN: %FileCheck %s --input-file %t/cdecl.h // RUN: %check-in-clang %t/cdecl.h -F %t // RUN: %check-in-clang-c %t/cdecl.h -F %t // RUN: %check-in-clang-cxx %t/cdecl.h -F %t // REQUIRES: objc_interop //--- CFramework.framework/Modules/module.modulemap framework module CFramework { umbrella header "CFramework.h" } //--- CFramework.framework/Headers/CFramework.h typedef int IntFromCFramework; //--- Lib.swift import CFramework import CoreGraphics import Foundation // CHECK-NOT: Foundation; /// Imports for C variant to @_cdecl // CHECK: #if __has_feature(objc_modules) // CHECK: @import CFramework; // CHECK-NEXT: @import CoreGraphics; // CHECK-NEXT: #elif defined(__OBJC__) // CHECK-NEXT: #import // CHECK-NEXT: #import // CHECK-NEXT: #else // CHECK-NEXT: #include // CHECK-NEXT: #include // CHECK-NEXT: #endif // CHECK: #if defined(__cplusplus) // CHECK: extern "C" { // CHECK: #endif @c(get_int_alias) public func getIntAlias() -> IntFromCFramework { 42 } // CHECK: SWIFT_EXTERN IntFromCFramework get_int_alias(void) SWIFT_NOEXCEPT SWIFT_WARN_UNUSED_RESULT; @c(imports_cgpoint) public func importsCGPoint(pt: CGPoint) { } // CHECK: SWIFT_EXTERN void imports_cgpoint(CGPoint pt) SWIFT_NOEXCEPT; // CHECK: #if defined(__cplusplus) // CHECK: } // extern "C" // CHECK: #endif /// Imports for Objective-C variant to @_cdecl @_cdecl("imports_cgpoint_objc") public func importsCGPointObjC(pt: CGPoint) { } // CHECK: #if defined(__OBJC__) // CHECK: #if __has_feature(objc_modules) // CHECK-NEXT: #if __has_warning("-Watimport-in-framework-header") // CHECK-NEXT: #pragma clang diagnostic ignored "-Watimport-in-framework-header" // CHECK-NEXT: #endif // CHECK-NEXT: @import CoreGraphics; // CHECK-NEXT: #endif // CHECK: #if defined(__OBJC__) // CHECK: SWIFT_EXTERN void imports_cgpoint_objc(CGPoint pt) SWIFT_NOEXCEPT; // CHECK: #endif