// REQUIRES: swift_feature_SafeInteropWrappers // RUN: %target-swift-ide-test -print-module -module-to-print=CountedByClang -plugin-path %swift-plugin-dir -I %S/Inputs -source-filename=x -enable-experimental-feature SafeInteropWrappers -Xcc -Werror -Xcc -Wno-nullability-completeness -Xcc -Wno-div-by-zero -Xcc -Wno-pointer-to-int-cast | %FileCheck %s // swift-ide-test doesn't currently typecheck the macro expansions, so run the compiler as well // RUN: %empty-directory(%t) // RUN: %target-swift-frontend -emit-module -plugin-path %swift-plugin-dir -o %t/CountedBy.swiftmodule -I %S/Inputs -enable-experimental-feature SafeInteropWrappers -strict-memory-safety -warnings-as-errors -Xcc -Werror -Xcc -Wno-nullability-completeness -Xcc -Wno-div-by-zero -Xcc -Wno-pointer-to-int-cast %s // Check that ClangImporter correctly infers and expands @_SwiftifyImport macros for functions with __counted_by parameters. import CountedByClang // CHECK: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func binaryLiteral(_ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func bitshift(_ m: Int32, _ n: Int32, _ o: Int32, _ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func bitwise(_ m: Int32, _ n: Int32, _ o: Int32, _ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func complexExpr(_ len: Int{{.*}}, _ offset: Int{{.*}}, _ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func constFloatCastedToInt(_ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func constInt(_ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func hexLiteral(_ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func nonnull(_ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func nullUnspecified(_ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func nullable(_ p: UnsafeMutableBufferPointer?) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func octalLiteral(_ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func offByOne(_ len: Int32, _ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func offBySome(_ len: Int32, _ offset: Int32, _ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func returnPointer(_ len: Int{{.*}}) -> UnsafeMutableBufferPointer // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func scalar(_ m: Int32, _ n: Int32, _ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func shared(_ p1: UnsafeMutableBufferPointer, _ p2: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func simple(_ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func simpleFlipped(_ p: UnsafeMutableBufferPointer) // CHECK-NEXT: /// This is an auto-generated wrapper for safer interop // CHECK-NEXT: @_alwaysEmitIntoClient @_disfavoredOverload public func swiftAttr(_ p: UnsafeMutableBufferPointer) @inlinable public func callBitshift(_ m: CInt, n: CInt, o: CInt, _ p: UnsafeMutableBufferPointer) { unsafe bitshift(m, n, o, p) } @inlinable public func callBitwise(_ m: CInt, n: CInt, o: CInt, _ p: UnsafeMutableBufferPointer) { unsafe bitwise(m, n, o, p) } @inlinable public func callComplexExpr(_ p: UnsafeMutableBufferPointer) { unsafe complexExpr(CInt(p.count), 1, p) } @inlinable public func callConstFloatCastedToInt(_ p: UnsafeMutableBufferPointer) { unsafe constFloatCastedToInt(p) } @inlinable public func callConstInt(_ p: UnsafeMutableBufferPointer) { unsafe constInt(p) } @inlinable public func callNonnull(_ p: UnsafeMutableBufferPointer) { unsafe nonnull(p) } @inlinable public func callNullUnspecified(_ p: UnsafeMutableBufferPointer) { unsafe nullUnspecified(p) } @inlinable public func callNullable(_ p: UnsafeMutableBufferPointer?) { unsafe nullable(p) } @inlinable public func callOctalLiteral(_ p: UnsafeMutableBufferPointer) { unsafe octalLiteral(p) } @inlinable public func callOffByOne(_ p: UnsafeMutableBufferPointer) { unsafe offByOne(0, p) } @inlinable public func callOffBySome(_ p: UnsafeMutableBufferPointer) { unsafe offBySome(0, 1, p) } @inlinable public func callReturnPointer() { let _: UnsafeMutableBufferPointer? = returnPointer(4) // call wrapper let _: UnsafeMutablePointer? = returnPointer(4) // call unsafe interop } @inlinable public func callScalar(_ p: UnsafeMutableBufferPointer) { unsafe scalar(4, 2, p) } @inlinable public func callShared(_ p: UnsafeMutableBufferPointer, _ p2: UnsafeMutableBufferPointer) { unsafe shared(p, p2) } @inlinable public func callSimple(_ p: UnsafeMutableBufferPointer) { unsafe simple(p) } @inlinable public func callSimpleIndirectOriginal(_ p: UnsafeMutablePointer) { let f = unsafe simple unsafe f(13, p) } @inlinable public func callSimpleIndirectOverload(_ p: UnsafeMutableBufferPointer) { let f: (UnsafeMutableBufferPointer) -> Void = unsafe simple unsafe f(p) } @inlinable public func callSimpleFlipped(_ p: UnsafeMutableBufferPointer) { unsafe simpleFlipped(p) } @inlinable public func callSwiftAttr(_ p: UnsafeMutableBufferPointer) { unsafe swiftAttr(p) }