@@ -21,6 +21,7 @@ public final class ClassWithIntField {
2121// CHECK: SWIFT_EXTERN void * _Nonnull $s5Class011passThroughA12WithIntFieldyAA0adeF0CADF(void * _Nonnull x) SWIFT_NOEXCEPT SWIFT_CALL; // passThroughClassWithIntField(_:)
2222// CHECK-NEXT: SWIFT_EXTERN void * _Nonnull $s5Class06returnA12WithIntFieldAA0acdE0CyF(void) SWIFT_NOEXCEPT SWIFT_CALL; // returnClassWithIntField()
2323// CHECK-NEXT: SWIFT_EXTERN void $s5Class04takeA12WithIntFieldyyAA0acdE0CF(void * _Nonnull x) SWIFT_NOEXCEPT SWIFT_CALL; // takeClassWithIntField(_:)
24+ // CHECK-NEXT: SWIFT_EXTERN void $s5Class04takeA17WithIntFieldInoutyyAA0acdE0CzF(void * _Nonnull * _Nonnull x) SWIFT_NOEXCEPT SWIFT_CALL; // takeClassWithIntFieldInout(_:)
2425
2526// CHECK: namespace Class {
2627
@@ -30,14 +31,13 @@ public final class ClassWithIntField {
3031// CHECK-EMPTY:
3132// CHECK-NEXT: } // namespace _impl
3233// CHECK-EMPTY:
33- // CHECK-NEXT: class ClassWithIntField final {
34+ // CHECK-NEXT: class ClassWithIntField final : public swift::_impl::RefCountedClass {
3435// CHECK-NEXT: public:
35- // CHECK-NEXT: inline ~ClassWithIntField() { swift::_impl::swift_release(_opaquePointer); }
36- // CHECK-NEXT: inline ClassWithIntField(ClassWithIntField&&) noexcept = default ;
36+ // CHECK-NEXT: using RefCountedClass::RefCountedClass;
37+ // CHECK-NEXT: using RefCountedClass::operator= ;
3738// CHECK-NEXT: private:
38- // CHECK-NEXT: inline ClassWithIntField(void * _Nonnull ptr) noexcept : _opaquePointer (ptr) {}
39+ // CHECK-NEXT: inline ClassWithIntField(void * _Nonnull ptr) noexcept : RefCountedClass (ptr) {}
3940// CHECK-EMPTY:
40- // CHECK-NEXT: void * _Nonnull _opaquePointer;
4141// CHECK-NEXT: friend class _impl::_impl_ClassWithIntField;
4242// CHECK-NEXT: };
4343// CHECK-EMPTY:
@@ -46,18 +46,17 @@ public final class ClassWithIntField {
4646// CHECK-NEXT:class _impl_ClassWithIntField {
4747// CHECK-NEXT:public:
4848// 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; }
5049// CHECK-NEXT:};
5150// CHECK-EMPTY:
5251// CHECK-NEXT:} // namespace _impl
5352
5453// 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)));
54+ // CHECK-NEXT: return _impl::_impl_ClassWithIntField::makeRetained(_impl::$s5Class011passThroughA12WithIntFieldyAA0adeF0CADF(::swift:: _impl::_impl_RefCountedClass ::getOpaquePointer(x)));
5655// CHECK-NEXT: }
5756
5857public final class register { }
5958
60- // CHECK: class register_ final {
59+ // CHECK: class register_ final : public swift::_impl::RefCountedClass {
6160
6261public func returnClassWithIntField( ) -> ClassWithIntField {
6362 return ClassWithIntField ( )
@@ -73,10 +72,15 @@ public func takeClassWithIntField(_ x: ClassWithIntField) {
7372 print ( " ClassWithIntField: \( x. field) ; " )
7473}
7574
75+ public func takeClassWithIntFieldInout( _ x: inout ClassWithIntField ) {
76+ x = ClassWithIntField ( )
77+ x. field = - 11
78+ }
79+
7680// CHECK: inline ClassWithIntField returnClassWithIntField() noexcept SWIFT_WARN_UNUSED_RESULT {
7781// CHECK-NEXT: return _impl::_impl_ClassWithIntField::makeRetained(_impl::$s5Class06returnA12WithIntFieldAA0acdE0CyF());
7882// CHECK-NEXT: }
7983
8084// CHECK: inline void takeClassWithIntField(const ClassWithIntField& x) noexcept {
81- // CHECK-NEXT: return _impl::$s5Class04takeA12WithIntFieldyyAA0acdE0CF(_impl::_impl_ClassWithIntField ::getOpaquePointer(x));
85+ // CHECK-NEXT: return _impl::$s5Class04takeA12WithIntFieldyyAA0acdE0CF(::swift:: _impl::_impl_RefCountedClass ::getOpaquePointer(x));
8286// CHECK-NEXT: }
0 commit comments