mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
It is really involved to change how methods and classes are emitted into the header so this patch introduces the impression of nested structs through using statements and still emits the structs themselves as top level structs. It emits them in their own namespace to avoid name collisions. This patch also had to change some names to be fully qualified to avoid some name lookup errors in case of nested structs. Moreover, nesting level of 3 and above requires C++17 because it relies on nested namespaces. Only nested structs are supported, not nested classes. Since this patch is already started to grow quite big, I decided to put it out for reviews and plan to address some of the shortcomings in a follow-up PR. rdar://118793469
34 lines
1.8 KiB
Swift
34 lines
1.8 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %s -typecheck -module-name Functions -clang-header-expose-decls=all-public -emit-clang-header-path %t/functions.h
|
|
// RUN: %FileCheck %s < %t/functions.h
|
|
|
|
// RUN: %check-interop-cxx-header-in-clang(%t/functions.h)
|
|
|
|
// CHECK: SWIFT_INLINE_THUNK swift_double2 passThroughdouble2(swift_double2 x) noexcept SWIFT_SYMBOL({{.*}}) SWIFT_WARN_UNUSED_RESULT {
|
|
// CHECK-NEXT: return Functions::_impl::$s9Functions18passThroughdouble2y4simd7double2VAEF(x);
|
|
// CHECK-NEXT: }
|
|
|
|
// CHECK: SWIFT_INLINE_THUNK swift_float3 passThroughfloat3(swift_float3 x) noexcept SWIFT_SYMBOL({{.*}}) SWIFT_WARN_UNUSED_RESULT {
|
|
// CHECK-NEXT: return Functions::_impl::$s9Functions17passThroughfloat3y4simd6float3VAEF(x);
|
|
// CHECK-NEXT: }
|
|
|
|
// CHECK: SWIFT_INLINE_THUNK swift_float4 passThroughfloat4(swift_float4 x) noexcept SWIFT_SYMBOL({{.*}}) SWIFT_WARN_UNUSED_RESULT {
|
|
// CHECK-NEXT: return Functions::_impl::$s9Functions17passThroughfloat4y4simd6float4VAEF(x);
|
|
// CHECK-NEXT: }
|
|
|
|
// CHECK: SWIFT_INLINE_THUNK swift_int3 passThroughint3(swift_int3 x) noexcept SWIFT_SYMBOL({{.*}}) SWIFT_WARN_UNUSED_RESULT {
|
|
// CHECK-NEXT: return Functions::_impl::$s9Functions15passThroughint3y4simd4int3VAEF(x);
|
|
// CHECK-NEXT: }
|
|
|
|
// CHECK: SWIFT_INLINE_THUNK swift_uint4 passThroughuint4(swift_uint4 x) noexcept SWIFT_SYMBOL({{.*}}) SWIFT_WARN_UNUSED_RESULT {
|
|
// CHECK-NEXT: return Functions::_impl::$s9Functions16passThroughuint4y4simd5uint4VAEF(x);
|
|
// CHECK-NEXT: }
|
|
|
|
import simd
|
|
|
|
public func passThroughfloat3(_ x: float3) -> float3 { return x }
|
|
public func passThroughfloat4(_ x: float4) -> float4 { return x }
|
|
public func passThroughdouble2(_ x: double2) -> double2 { return x }
|
|
public func passThroughint3(_ x: int3) -> int3 { return x }
|
|
public func passThroughuint4(_ x: uint4) -> uint4 { return x }
|