55// RUN: %check-interop-cxx-header-in-clang(%t/class.h)
66
77public final class ClassWithIntField {
8- let field : Int64
8+ var field : Int64
99
1010 init ( ) {
1111 field = 0
@@ -18,7 +18,9 @@ public final class ClassWithIntField {
1818
1919// CHECK: namespace Class {
2020
21- // CHECK: SWIFT_EXTERN void * _Nonnull $s5Class06returnA12WithIntFieldAA0acdE0CyF(void) SWIFT_NOEXCEPT SWIFT_CALL; // returnClassWithIntField()
21+ // CHECK: SWIFT_EXTERN void * _Nonnull $s5Class011passThroughA12WithIntFieldyAA0adeF0CADF(void * _Nonnull x) SWIFT_NOEXCEPT SWIFT_CALL; // passThroughClassWithIntField(_:)
22+ // CHECK-NEXT: SWIFT_EXTERN void * _Nonnull $s5Class06returnA12WithIntFieldAA0acdE0CyF(void) SWIFT_NOEXCEPT SWIFT_CALL; // returnClassWithIntField()
23+ // CHECK-NEXT: SWIFT_EXTERN void $s5Class04takeA12WithIntFieldyyAA0acdE0CF(void * _Nonnull x) SWIFT_NOEXCEPT SWIFT_CALL; // takeClassWithIntField(_:)
2224
2325// CHECK: namespace Class {
2426
@@ -44,10 +46,15 @@ public final class ClassWithIntField {
4446// CHECK-NEXT:class _impl_ClassWithIntField {
4547// CHECK-NEXT:public:
4648// CHECK-NEXT:static inline ClassWithIntField makeRetained(void * _Nonnull ptr) noexcept { return ClassWithIntField(ptr); }
49+ // CHECK-NEXT:static inline void * _Nonnull getOpaquePointer(const ClassWithIntField &object) noexcept { return object._opaquePointer; }
4750// CHECK-NEXT:};
4851// CHECK-EMPTY:
4952// CHECK-NEXT:} // namespace _impl
5053
54+ // CHECK: inline ClassWithIntField passThroughClassWithIntField(const ClassWithIntField& x) noexcept SWIFT_WARN_UNUSED_RESULT {
55+ // CHECK-NEXT: return _impl::_impl_ClassWithIntField::makeRetained(_impl::$s5Class011passThroughA12WithIntFieldyAA0adeF0CADF(_impl::_impl_ClassWithIntField::getOpaquePointer(x)));
56+ // CHECK-NEXT: }
57+
5158public final class register { }
5259
5360// CHECK: class register_ final {
@@ -56,6 +63,20 @@ public func returnClassWithIntField() -> ClassWithIntField {
5663 return ClassWithIntField ( )
5764}
5865
66+
67+ public func passThroughClassWithIntField( _ x: ClassWithIntField ) -> ClassWithIntField {
68+ x. field = 42
69+ return x
70+ }
71+
72+ public func takeClassWithIntField( _ x: ClassWithIntField ) {
73+ print ( " ClassWithIntField: \( x. field) ; " )
74+ }
75+
5976// CHECK: inline ClassWithIntField returnClassWithIntField() noexcept SWIFT_WARN_UNUSED_RESULT {
6077// CHECK-NEXT: return _impl::_impl_ClassWithIntField::makeRetained(_impl::$s5Class06returnA12WithIntFieldAA0acdE0CyF());
6178// CHECK-NEXT: }
79+
80+ // CHECK: inline void takeClassWithIntField(const ClassWithIntField& x) noexcept {
81+ // CHECK-NEXT: return _impl::$s5Class04takeA12WithIntFieldyyAA0acdE0CF(_impl::_impl_ClassWithIntField::getOpaquePointer(x));
82+ // CHECK-NEXT: }
0 commit comments