@@ -24,10 +24,78 @@ public struct LargeStruct {
24
24
}
25
25
}
26
26
27
+ public final class ClassWithMethods {
28
+ var field : Int
29
+
30
+ init ( _ x: Int ) {
31
+ field = x
32
+ }
33
+
34
+ deinit {
35
+ print ( " ClassWithMethods \( field) deinit " )
36
+ }
37
+
38
+ public func dump( ) {
39
+ print ( " ClassWithMethods \( field) ; " )
40
+ }
41
+
42
+ public func sameRet( ) -> ClassWithMethods {
43
+ return self
44
+ }
45
+
46
+ public func mutate( ) {
47
+ field = - field
48
+ }
49
+
50
+ public func deepCopy( _ x: Int ) -> ClassWithMethods {
51
+ return ClassWithMethods ( field + x)
52
+ }
53
+ }
54
+
55
+ public final class PassStructInClassMethod {
56
+ var largeStruct : LargeStruct
57
+ init ( ) { largeStruct = LargeStruct ( x1: 1 , x2: 2 , x3: 3 , x4: 4 , x5: 5 , x6: 6 ) }
58
+
59
+ public func retStruct( _ x: Int ) -> LargeStruct {
60
+ print ( " PassStructInClassMethod.retStruct \( x) ; " )
61
+ return largeStruct
62
+ }
63
+ public func updateStruct( _ x: Int , _ y: LargeStruct ) {
64
+ largeStruct = LargeStruct ( x1: x, x2: y. x2, x3: y. x3, x4: y. x4, x5: y. x5, x6: y. x6)
65
+ }
66
+ }
67
+
68
+ // CHECK: SWIFT_EXTERN void $s7Methods09ClassWithA0C4dumpyyF(SWIFT_CONTEXT void * _Nonnull _self) SWIFT_NOEXCEPT SWIFT_CALL; // dump()
69
+ // CHECK: SWIFT_EXTERN void * _Nonnull $s7Methods09ClassWithA0C7sameRetACyF(SWIFT_CONTEXT void * _Nonnull _self) SWIFT_NOEXCEPT SWIFT_CALL; // sameRet()
70
+ // CHECK: SWIFT_EXTERN void $s7Methods09ClassWithA0C6mutateyyF(SWIFT_CONTEXT void * _Nonnull _self) SWIFT_NOEXCEPT SWIFT_CALL; // mutate()
71
+ // CHECK: SWIFT_EXTERN void * _Nonnull $s7Methods09ClassWithA0C8deepCopyyACSiF(ptrdiff_t x, SWIFT_CONTEXT void * _Nonnull _self) SWIFT_NOEXCEPT SWIFT_CALL; // deepCopy(_:)
27
72
// CHECK: SWIFT_EXTERN void $s7Methods11LargeStructV7doubledACyF(SWIFT_INDIRECT_RESULT void * _Nonnull, SWIFT_CONTEXT const void * _Nonnull _self) SWIFT_NOEXCEPT SWIFT_CALL; // doubled()
28
73
// CHECK: SWIFT_EXTERN void $s7Methods11LargeStructV4dumpyyF(SWIFT_CONTEXT const void * _Nonnull _self) SWIFT_NOEXCEPT SWIFT_CALL; // dump()
29
74
// CHECK: SWIFT_EXTERN void $s7Methods11LargeStructV6scaledyACSi_SitF(SWIFT_INDIRECT_RESULT void * _Nonnull, ptrdiff_t x, ptrdiff_t y, SWIFT_CONTEXT const void * _Nonnull _self) SWIFT_NOEXCEPT SWIFT_CALL; // scaled(_:_:)
30
75
// CHECK: SWIFT_EXTERN void $s7Methods11LargeStructV5addedyA2CF(SWIFT_INDIRECT_RESULT void * _Nonnull, const void * _Nonnull x, SWIFT_CONTEXT const void * _Nonnull _self) SWIFT_NOEXCEPT SWIFT_CALL; // added(_:)
76
+ // CHECK: SWIFT_EXTERN void $s7Methods23PassStructInClassMethodC03retC0yAA05LargeC0VSiF(SWIFT_INDIRECT_RESULT void * _Nonnull, ptrdiff_t x, SWIFT_CONTEXT void * _Nonnull _self) SWIFT_NOEXCEPT SWIFT_CALL; // retStruct(_:)
77
+ // CHECK: SWIFT_EXTERN void $s7Methods23PassStructInClassMethodC06updateC0yySi_AA05LargeC0VtF(ptrdiff_t x, const void * _Nonnull y, SWIFT_CONTEXT void * _Nonnull _self) SWIFT_NOEXCEPT SWIFT_CALL; // updateStruct(_:_:)
78
+
79
+ // CHECK: class ClassWithMethods final : public swift::_impl::RefCountedClass {
80
+ // CHECK: using RefCountedClass::RefCountedClass;
81
+ // CHECK-NEXT: using RefCountedClass::operator=;
82
+ // CHECK-NEXT: inline void dump();
83
+ // CHECK-NEXT: inline ClassWithMethods sameRet();
84
+ // CHECK-NEXT: inline void mutate();
85
+ // CHECK-NEXT: inline ClassWithMethods deepCopy(swift::Int x);
86
+
87
+ // CHECK: inline void ClassWithMethods::dump() {
88
+ // CHECK-NEXT: return _impl::$s7Methods09ClassWithA0C4dumpyyF(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
89
+ // CHECK-NEXT: }
90
+ // CHECK-NEXT: inline ClassWithMethods ClassWithMethods::sameRet() {
91
+ // CHECK-NEXT: return _impl::_impl_ClassWithMethods::makeRetained(_impl::$s7Methods09ClassWithA0C7sameRetACyF(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this)));
92
+ // CHECK-NEXT: }
93
+ // CHECK-NEXT: inline void ClassWithMethods::mutate() {
94
+ // CHECK-NEXT: return _impl::$s7Methods09ClassWithA0C6mutateyyF(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
95
+ // CHECK-NEXT: }
96
+ // CHECK-NEXT: inline ClassWithMethods ClassWithMethods::deepCopy(swift::Int x) {
97
+ // CHECK-NEXT: return _impl::_impl_ClassWithMethods::makeRetained(_impl::$s7Methods09ClassWithA0C8deepCopyyACSiF(x, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this)));
98
+ // CHECK-NEXT: }
31
99
32
100
// CHECK: class LargeStruct final {
33
101
// CHECK: inline LargeStruct(LargeStruct &&) = default;
@@ -56,6 +124,23 @@ public struct LargeStruct {
56
124
// CHECK-NEXT: });
57
125
// CHECK-NEXT: }
58
126
127
+ // CHECK: inline LargeStruct PassStructInClassMethod::retStruct(swift::Int x) {
128
+ // CHECK-NEXT: return _impl::_impl_LargeStruct::returnNewValue([&](void * _Nonnull result) {
129
+ // CHECK-NEXT: _impl::$s7Methods23PassStructInClassMethodC03retC0yAA05LargeC0VSiF(result, x, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
130
+ // CHECK-NEXT: });
131
+ // CHECK-NEXT: }
132
+ // CHECK-NEXT: inline void PassStructInClassMethod::updateStruct(swift::Int x, const LargeStruct& y) {
133
+ // CHECK-NEXT: return _impl::$s7Methods23PassStructInClassMethodC06updateC0yySi_AA05LargeC0VtF(x, _impl::_impl_LargeStruct::getOpaquePointer(y), ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
134
+ // CHECK-NEXT: }
135
+
136
+ public func createClassWithMethods( _ x: Int ) -> ClassWithMethods {
137
+ return ClassWithMethods ( x)
138
+ }
139
+
59
140
public func createLargeStruct( ) -> LargeStruct {
60
141
return LargeStruct ( x1: - 1 , x2: 2 , x3: - 100 , x4: 42 , x5: 67 , x6: - 10101 )
61
142
}
143
+
144
+ public func createPassStructInClassMethod( ) -> PassStructInClassMethod {
145
+ return PassStructInClassMethod ( )
146
+ }
0 commit comments