@@ -19,6 +19,23 @@ 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
35
+
36
+ public subscript( _ i: Int ) -> Int {
37
+ return i
38
+ }
22
39
}
23
40
24
41
public class DerivedClass : BaseClass {
@@ -34,6 +51,30 @@ public class DerivedClass: BaseClass {
34
51
public func virtualMethodInDerived( _ x: BaseClass ) -> BaseClass {
35
52
return x
36
53
}
54
+
55
+ override public var virtualComputedProp : Int {
56
+ return - 75
57
+ }
58
+ override public var virtualComputedGetSet : Int64 {
59
+ get {
60
+ super. virtualComputedGetSet
61
+ }
62
+ set {
63
+ super. virtualComputedGetSet = newValue * 2
64
+ }
65
+ }
66
+ override public var storedProp : Int {
67
+ get {
68
+ return - super. storedProp
69
+ }
70
+ set {
71
+ super. storedProp = newValue
72
+ }
73
+ }
74
+
75
+ override public subscript( _ i: Int ) -> Int {
76
+ return i * 2
77
+ }
37
78
}
38
79
39
80
public final class DerivedDerivedClass : DerivedClass {
@@ -49,6 +90,16 @@ public final class DerivedDerivedClass: DerivedClass {
49
90
public func methodInDerivedDerived( ) {
50
91
print ( " DerivedDerivedClass.methodInDerivedDerived " )
51
92
}
93
+ override public var storedProp : Int {
94
+ get {
95
+ return - super. storedProp
96
+ }
97
+ set {
98
+ super. storedProp = newValue + 1
99
+ }
100
+ }
101
+ public var storedPropInDerivedDerived : Int = 0
102
+ public var computedPropInDerivedDerived : Int { return 11 }
52
103
}
53
104
54
105
public func returnBaseClass( ) -> BaseClass {
@@ -83,6 +134,53 @@ public func returnDerivedDerivedClass() -> DerivedDerivedClass {
83
134
// CHECK-NEXT: return _impl::$s5Class04BaseA0C013finalMethodInB0yS2iF(x, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
84
135
// CHECK-NEXT: }
85
136
137
+ // CHECK: swift::Int BaseClass::getVirtualComputedProp() {
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::$s5Class04BaseA0C19virtualComputedPropSivg);
141
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 2]]));
142
+ // CHECK-NEXT: return (* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
143
+ // CHECK-NEXT: }
144
+
145
+ // CHECK: int64_t BaseClass::getVirtualComputedGetSet() {
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::$s5Class04BaseA0C21virtualComputedGetSets5Int64Vvg);
149
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 3]]));
150
+ // CHECK-NEXT: return (* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
151
+ // CHECK-NEXT: }
152
+
153
+ // CHECK: void BaseClass::setVirtualComputedGetSet(int64_t newValue) {
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::$s5Class04BaseA0C21virtualComputedGetSets5Int64Vvs);
157
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 4]]));
158
+ // CHECK-NEXT: return (* fptr_)(newValue, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
159
+ // CHECK-NEXT: }
160
+
161
+ // CHECK: swift::Int BaseClass::getStoredProp() {
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::$s5Class04BaseA0C10storedPropSivg);
165
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 6]]));
166
+ // CHECK-NEXT: return (* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
167
+ // CHECK-NEXT: }
168
+
169
+ // CHECK: void BaseClass::setStoredProp(swift::Int value) {
170
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
171
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
172
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class04BaseA0C10storedPropSivs);
173
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 7]]));
174
+ // CHECK-NEXT: return (* fptr_)(value, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
175
+ // CHECK-NEXT: }
176
+
177
+ // CHECK: swift::Int BaseClass::operator [](swift::Int i) const
178
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
179
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
180
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class04BaseA0CyS2icig);
181
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 9]]));
182
+ // CHECK-NEXT: return (* fptr_)(i, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
183
+
86
184
// CHECK: void DerivedClass::virtualMethod() {
87
185
// CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
88
186
// CHECK-NEXT: void **vtable_ = *selfPtr_;
@@ -103,10 +201,57 @@ public func returnDerivedDerivedClass() -> DerivedDerivedClass {
103
201
// CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
104
202
// CHECK-NEXT: void **vtable_ = *selfPtr_;
105
203
// CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0C015virtualMethodInB0yAA04BaseA0CAFF);
106
- // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 2 ]]));
204
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 10 ]]));
107
205
// CHECK-NEXT: return _impl::_impl_BaseClass::makeRetained((* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(x), ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this)));
108
206
// CHECK-NEXT: }
109
207
208
+ // CHECK: swift::Int DerivedClass::getVirtualComputedProp() {
209
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
210
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
211
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0C19virtualComputedPropSivg);
212
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 2]]));
213
+ // CHECK-NEXT: return (* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
214
+ // CHECK-NEXT: }
215
+
216
+ // CHECK: int64_t DerivedClass::getVirtualComputedGetSet() {
217
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
218
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
219
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0C21virtualComputedGetSets5Int64Vvg);
220
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 3]]));
221
+ // CHECK-NEXT: return (* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
222
+ // CHECK-NEXT: }
223
+
224
+ // CHECK: void DerivedClass::setVirtualComputedGetSet(int64_t newValue) {
225
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
226
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
227
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0C21virtualComputedGetSets5Int64Vvs);
228
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 4]]));
229
+ // CHECK-NEXT: return (* fptr_)(newValue, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
230
+ // CHECK-NEXT: }
231
+
232
+ // CHECK: swift::Int DerivedClass::getStoredProp() {
233
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
234
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
235
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0C10storedPropSivg);
236
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 6]]));
237
+ // CHECK-NEXT: return (* fptr_)(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
238
+ // CHECK-NEXT: }
239
+
240
+ // CHECK: void DerivedClass::setStoredProp(swift::Int newValue) {
241
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
242
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
243
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0C10storedPropSivs);
244
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 7]]));
245
+ // CHECK-NEXT: return (* fptr_)(newValue, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
246
+ // CHECK-NEXT: }
247
+
248
+ // CHECK: swift::Int DerivedClass::operator [](swift::Int i) const
249
+ // CHECK-NEXT: void ***selfPtr_ = reinterpret_cast<void ***>( ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
250
+ // CHECK-NEXT: void **vtable_ = *selfPtr_;
251
+ // CHECK-NEXT: using FType = decltype(_impl::$s5Class07DerivedA0CyS2icig);
252
+ // CHECK-NEXT: FType *fptr_ = reinterpret_cast<FType *>(*(vtable_ + [[#VM1 + 9]]));
253
+ // CHECK-NEXT: return (* fptr_)(i, ::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
254
+
110
255
// CHECK: void DerivedDerivedClass::virtualMethod() {
111
256
// CHECK-NEXT: return _impl::$s5Class07DerivedbA0C13virtualMethodyyF(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
112
257
// CHECK-NEXT: }
@@ -119,3 +264,10 @@ public func returnDerivedDerivedClass() -> DerivedDerivedClass {
119
264
// CHECK-NEXT: return _impl::$s5Class07DerivedbA0C08methodInbB0yyF(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
120
265
// CHECK-NEXT: }
121
266
267
+ // CHECK: swift::Int DerivedDerivedClass::getStoredProp() {
268
+ // CHECK-NEXT: return _impl::$s5Class07DerivedbA0C10storedPropSivg(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
269
+ // CHECK-NEXT: }
270
+
271
+ // CHECK: swift::Int DerivedDerivedClass::getComputedPropInDerivedDerived() {
272
+ // CHECK-NEXT: return _impl::$s5Class07DerivedbA0C014computedPropInbB0Sivg(::swift::_impl::_impl_RefCountedClass::getOpaquePointer(*this));
273
+ // CHECK-NEXT: }
0 commit comments