|
5 | 5 | // RUN: %check-interop-cxx-header-in-clang(%t/inits.h -Wno-unused-function)
|
6 | 6 |
|
7 | 7 |
|
| 8 | +// CHECK: SWIFT_EXTERN void * _Nonnull $s4Init9BaseClassCyACSi_SitcfC(ptrdiff_t x, ptrdiff_t y, SWIFT_CONTEXT void * _Nonnull _self) SWIFT_NOEXCEPT SWIFT_CALL; // init(_:_:) |
| 9 | +// CHECK-NEXT: SWIFT_EXTERN void * _Nonnull $s4Init12DerivedClassCyACSi_SitcfC(ptrdiff_t x, ptrdiff_t y, SWIFT_CONTEXT void * _Nonnull _self) SWIFT_NOEXCEPT SWIFT_CALL; // init(_:_:) |
| 10 | + |
8 | 11 | // CHECK: SWIFT_EXTERN struct swift_interop_returnStub_Init_uint32_t_0_4 $s4Init16FirstSmallStructVACycfC(void) SWIFT_NOEXCEPT SWIFT_CALL; // init()
|
9 | 12 | // CHECK-NEXT: SWIFT_EXTERN struct swift_interop_returnStub_Init_uint32_t_0_4 $s4Init16FirstSmallStructVyACSicfC(ptrdiff_t x) SWIFT_NOEXCEPT SWIFT_CALL; // init(_:)
|
10 | 13 |
|
@@ -94,6 +97,40 @@ public struct StructWithRefCountStoredProp {
|
94 | 97 | // CHECK-NEXT: static inline StructWithRefCountStoredProp init(swift::Int x);
|
95 | 98 |
|
96 | 99 |
|
| 100 | +public final class FinalClass { |
| 101 | + public var prop: FirstSmallStruct |
| 102 | + |
| 103 | + public init(_ prop: FirstSmallStruct) { self.prop = prop } |
| 104 | +} |
| 105 | + |
| 106 | +public class BaseClass { |
| 107 | + public var x: Int |
| 108 | + |
| 109 | + public init(_ x: Int, _ y: Int) { self.x = x + y } |
| 110 | +} |
| 111 | + |
| 112 | +public class DerivedClass: BaseClass { |
| 113 | + override public init(_ x: Int, _ y: Int) { |
| 114 | + super.init(x + 1, y + 1) |
| 115 | + } |
| 116 | +} |
| 117 | + |
| 118 | +public class DerivedClassTwo: BaseClass { |
| 119 | +} |
| 120 | + |
| 121 | +// CHECK: BaseClass BaseClass::init(swift::Int x, swift::Int y) { |
| 122 | +// CHECK-NEXT: return _impl::_impl_BaseClass::makeRetained(_impl::$s4Init9BaseClassCyACSi_SitcfC(x, y, swift::TypeMetadataTrait<BaseClass>::getTypeMetadata())); |
| 123 | + |
| 124 | +// CHECK: DerivedClass DerivedClass::init(swift::Int x, swift::Int y) { |
| 125 | +// CHECK-NEXT: _impl::_impl_DerivedClass::makeRetained(_impl::$s4Init12DerivedClassCyACSi_SitcfC(x, y, swift::TypeMetadataTrait<DerivedClass>::getTypeMetadata())); |
| 126 | + |
| 127 | +// CHECK: DerivedClassTwo DerivedClassTwo::init(swift::Int x, swift::Int y) { |
| 128 | +// CHECK-NEXT: return _impl::_impl_DerivedClassTwo::makeRetained(_impl::$s4Init15DerivedClassTwoCyACSi_SitcfC(x, y, swift::TypeMetadataTrait<DerivedClassTwo>::getTypeMetadata())); |
| 129 | + |
| 130 | +// CHECK: FinalClass FinalClass::init(const FirstSmallStruct& prop) { |
| 131 | +// CHECK-NEXT: return _impl::_impl_FinalClass::makeRetained(_impl::$s4Init10FinalClassCyAcA16FirstSmallStructVcfC(_impl::swift_interop_passDirect_Init_uint32_t_0_4(_impl::_impl_FirstSmallStruct::getOpaquePointer(prop)), swift::TypeMetadataTrait<FinalClass>::getTypeMetadata())); |
| 132 | + |
| 133 | + |
97 | 134 | // CHECK: inline uint32_t FirstSmallStruct::getX() const {
|
98 | 135 | // CHECK-NEXT: return _impl::$s4Init16FirstSmallStructV1xs6UInt32Vvg(_impl::swift_interop_passDirect_Init_uint32_t_0_4(_getOpaquePointer()));
|
99 | 136 | // CHECK-NEXT: }
|
|
0 commit comments