@@ -19,6 +19,19 @@ public class BaseClass {
19
19
public final func finalMethodInBase( _ x: Int ) -> Int {
20
20
return x * 2
21
21
}
22
+
23
+ public var virtualComputedProp : Int {
24
+ return 21
25
+ }
26
+ public var virtualComputedGetSet : Int64 {
27
+ get {
28
+ return field
29
+ }
30
+ set {
31
+ field = newValue
32
+ }
33
+ }
34
+ public var storedProp : Int = 0
22
35
}
23
36
24
37
public class DerivedClass : BaseClass {
@@ -34,6 +47,26 @@ public class DerivedClass: BaseClass {
34
47
public func virtualMethodInDerived( _ x: BaseClass ) -> BaseClass {
35
48
return x
36
49
}
50
+
51
+ override public var virtualComputedProp : Int {
52
+ return - 75
53
+ }
54
+ override public var virtualComputedGetSet : Int64 {
55
+ get {
56
+ super. virtualComputedGetSet
57
+ }
58
+ set {
59
+ super. virtualComputedGetSet = newValue * 2
60
+ }
61
+ }
62
+ override public var storedProp : Int {
63
+ get {
64
+ return - super. storedProp
65
+ }
66
+ set {
67
+ super. storedProp = newValue
68
+ }
69
+ }
37
70
}
38
71
39
72
public final class DerivedDerivedClass : DerivedClass {
@@ -49,6 +82,16 @@ public final class DerivedDerivedClass: DerivedClass {
49
82
public func methodInDerivedDerived( ) {
50
83
print ( " DerivedDerivedClass.methodInDerivedDerived " )
51
84
}
85
+ override public var storedProp : Int {
86
+ get {
87
+ return - super. storedProp
88
+ }
89
+ set {
90
+ super. storedProp = newValue + 1
91
+ }
92
+ }
93
+ public var storedPropInDerivedDerived : Int = 0
94
+ public var computedPropInDerivedDerived : Int { return 11 }
52
95
}
53
96
54
97
public func returnBaseClass( ) -> BaseClass {
@@ -83,6 +126,46 @@ public func returnDerivedDerivedClass() -> DerivedDerivedClass {
83
126
// CHECK-NEXT: return _impl::$s5Class04BaseA0C013finalMethodInB0yS2iF(x, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
84
127
// CHECK-NEXT: }
85
128
129
+ // CHECK: swift::Int BaseClass::getVirtualComputedProp() {
130
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
131
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
132
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class04BaseA0C19virtualComputedPropSivg);
133
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 2]]));
134
+ // CHECK-NEXT: return (* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
135
+ // CHECK-NEXT: }
136
+
137
+ // CHECK: int64_t BaseClass::getVirtualComputedGetSet() {
138
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
139
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
140
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class04BaseA0C21virtualComputedGetSets5Int64Vvg);
141
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 3]]));
142
+ // CHECK-NEXT: return (* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
143
+ // CHECK-NEXT: }
144
+
145
+ // CHECK: void BaseClass::setVirtualComputedGetSet(int64_t newValue) {
146
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
147
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
148
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class04BaseA0C21virtualComputedGetSets5Int64Vvs);
149
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 4]]));
150
+ // CHECK-NEXT: return (* fptr_)(newValue, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
151
+ // CHECK-NEXT: }
152
+
153
+ // CHECK: swift::Int BaseClass::getStoredProp() {
154
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
155
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
156
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class04BaseA0C10storedPropSivg);
157
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 6]]));
158
+ // CHECK-NEXT: return (* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
159
+ // CHECK-NEXT: }
160
+
161
+ // CHECK: void BaseClass::setStoredProp(swift::Int value) {
162
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
163
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
164
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class04BaseA0C10storedPropSivs);
165
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 7]]));
166
+ // CHECK-NEXT: return (* fptr_)(value, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
167
+ // CHECK-NEXT: }
168
+
86
169
// CHECK: void DerivedClass::virtualMethod() {
87
170
// CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
88
171
// CHECK-NEXT: void **vtable_ = *selfPtr_;
@@ -103,10 +186,50 @@ public func returnDerivedDerivedClass() -> DerivedDerivedClass {
103
186
// CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
104
187
// CHECK-NEXT: void **vtable_ = *selfPtr_;
105
188
// CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0C015virtualMethodInB0yAA04BaseA0CAFF);
106
- // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 2 ]]));
189
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 9 ]]));
107
190
// CHECK-NEXT: return _impl::_impl_BaseClass::makeRetained((* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(x), ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this)));
108
191
// CHECK-NEXT: }
109
192
193
+ // CHECK: swift::Int DerivedClass::getVirtualComputedProp() {
194
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
195
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
196
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0C19virtualComputedPropSivg);
197
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 2]]));
198
+ // CHECK-NEXT: return (* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
199
+ // CHECK-NEXT: }
200
+
201
+ // CHECK: int64_t DerivedClass::getVirtualComputedGetSet() {
202
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
203
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
204
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0C21virtualComputedGetSets5Int64Vvg);
205
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 3]]));
206
+ // CHECK-NEXT: return (* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
207
+ // CHECK-NEXT: }
208
+
209
+ // CHECK: void DerivedClass::setVirtualComputedGetSet(int64_t newValue) {
210
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
211
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
212
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0C21virtualComputedGetSets5Int64Vvs);
213
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 4]]));
214
+ // CHECK-NEXT: return (* fptr_)(newValue, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
215
+ // CHECK-NEXT: }
216
+
217
+ // CHECK: swift::Int DerivedClass::getStoredProp() {
218
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
219
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
220
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0C10storedPropSivg);
221
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 6]]));
222
+ // CHECK-NEXT: return (* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
223
+ // CHECK-NEXT: }
224
+
225
+ // CHECK: void DerivedClass::setStoredProp(swift::Int newValue) {
226
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
227
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
228
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0C10storedPropSivs);
229
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 7]]));
230
+ // CHECK-NEXT: return (* fptr_)(newValue, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
231
+ // CHECK-NEXT: }
232
+
110
233
// CHECK: void DerivedDerivedClass::virtualMethod() {
111
234
// CHECK-NEXT: return _impl::$s5Class07DerivedbA0C13virtualMethodyyF(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
112
235
// CHECK-NEXT: }
@@ -119,3 +242,10 @@ public func returnDerivedDerivedClass() -> DerivedDerivedClass {
119
242
// CHECK-NEXT: return _impl::$s5Class07DerivedbA0C08methodInbB0yyF(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
120
243
// CHECK-NEXT: }
121
244
245
+ // CHECK: swift::Int DerivedDerivedClass::getStoredProp() {
246
+ // CHECK-NEXT: return _impl::$s5Class07DerivedbA0C10storedPropSivg(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
247
+ // CHECK-NEXT: }
248
+
249
+ // CHECK: swift::Int DerivedDerivedClass::getComputedPropInDerivedDerived() {
250
+ // CHECK-NEXT: return _impl::$s5Class07DerivedbA0C014computedPropInbB0Sivg(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
251
+ // CHECK-NEXT: }
0 commit comments