Files
swift-mirror/test/Interop/SwiftToCxx/extension/struct-extension-in-cxx.swift
Alex Lorenz 3948a2a5d3 [interop][SwiftToCxx] annotate inline thunks with SWIFT_INLINE_THUNK
This macro applies always_inline in addition to inline. It also applies artificial, which lets debugger know that this is an artificial function. The used attribute is added in debug builds to ensure that the symbol is emitted in the binary so that LLDB can invoke it.
2023-02-24 11:23:46 -08:00

27 lines
951 B
Swift

// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend %s -typecheck -module-name Structs -clang-header-expose-decls=all-public -emit-clang-header-path %t/structs.h
// RUN: %FileCheck %s < %t/structs.h
// RUN: %check-interop-cxx-header-in-clang(%t/structs.h -Wno-unused-private-field -Wno-unused-function)
public struct TypeAfterArray {
var x: Int16
}
public struct Array {
public var x: Int
}
extension Array {
public var val: Structs.TypeAfterArray {
return TypeAfterArray(x: 42)
}
}
// CHECK class SWIFT_SYMBOL("s:7Structs14TypeAfterArrayV") TypeAfterArray;
// CHECK: class SWIFT_SYMBOL("s:7Structs5ArrayV") Array final {
// CHECK: swift::Int getX() const SWIFT_SYMBOL("s:7Structs5ArrayV1xSivp");
// CHECK-NEXT: SWIFT_INLINE_THUNK void setX(swift::Int value) SWIFT_SYMBOL("s:7Structs5ArrayV1xSivp");
// CHECK-NEXT: TypeAfterArray getVal() const SWIFT_SYMBOL("s:7Structs5ArrayV3valAA09TypeAfterB0Vvp");