6
6
// RUN: %target-build-swift-dylib(%t/%target-library-name(resilient_class)) -Xfrontend -enable-resilience %S/../../Inputs/resilient_class.swift -emit-module -emit-module-path %t/resilient_class.swiftmodule -module-name resilient_class -I%t -L%t -lresilient_struct
7
7
// RUN: %target-codesign %t/%target-library-name(resilient_class)
8
8
9
- // RUN: %target-build-swift %s -L %t -I %t -lresilient_struct -lresilient_class -o %t/main %target-rpath(%t)
9
+ // RUN: %target-build-swift-dylib(%t/%target-library-name(resilient_objc_class)) -Xfrontend -enable-resilience %S/../../Inputs/resilient_objc_class.swift -emit-module -emit-module-path %t/resilient_objc_class.swiftmodule -module-name resilient_objc_class -I%t -L%t -lresilient_struct
10
+ // RUN: %target-codesign %t/%target-library-name(resilient_objc_class)
11
+
12
+ // RUN: %target-build-swift %s -L %t -I %t -lresilient_struct -lresilient_class -lresilient_objc_class -o %t/main %target-rpath(%t)
10
13
// RUN: %target-codesign %t/main
11
14
12
- // RUN: %target-run %t/main %t/%target-library-name(resilient_struct) %t/libresilient_class%{target-shared-library-suffix}
15
+ // RUN: %target-run %t/main %t/%target-library-name(resilient_struct) %t/libresilient_class%{target-shared-library-suffix} %t/libresilient_objc_class%{target-shared-library-suffix}
13
16
14
17
15
18
// REQUIRES: executable_test
@@ -22,6 +25,7 @@ import ObjectiveC
22
25
import Foundation
23
26
import resilient_struct
24
27
import resilient_class
28
+ import resilient_objc_class
25
29
26
30
// Old OS versions do not have this hook.
27
31
let getClassHookMissing = {
@@ -110,6 +114,19 @@ class ResilientFieldSubclassObjC : ResilientFieldSuperclassObjC {
110
114
var subvalue = ResilientInt ( i: 4 )
111
115
}
112
116
117
+ class ResilientSubclassOfNSObject : ResilientNSObjectOutsideParent {
118
+ var subvalue = ResilientInt ( i: 5 )
119
+ }
120
+
121
+ class ResilientSubclassOfGenericNSObject : ResilientGenericNSObjectOutsideParent < Int > {
122
+ var subvalue = ResilientInt ( i: 6 )
123
+ init ( ) { super. init ( property: 0 ) }
124
+ }
125
+
126
+ class ResilientSubclassOfConcreteNSObject : ResilientConcreteNSObjectOutsideChild {
127
+ var subvalue = ResilientInt ( i: 7 )
128
+ init ( ) { super. init ( property: " " ) }
129
+ }
113
130
114
131
func requireClass( named name: String , demangledName: String ) {
115
132
for _ in 1 ... 2 {
@@ -124,14 +141,18 @@ func requireClass(named name: String) {
124
141
return requireClass ( named: name, demangledName: name)
125
142
}
126
143
127
- testSuite. test ( " Basic " ) {
144
+ testSuite. test ( " Basic " )
145
+ . requireOwnProcess ( )
146
+ . code {
128
147
requireClass ( named: " main.SwiftSubclass " )
129
148
requireClass ( named: " main.SwiftSuperclass " )
130
149
requireClass ( named: " main.ObjCSubclass " )
131
150
requireClass ( named: " main.ObjCSuperclass " )
132
151
}
133
152
134
- testSuite. test ( " BasicMangled " ) {
153
+ testSuite. test ( " BasicMangled " )
154
+ . requireOwnProcess ( )
155
+ . code {
135
156
requireClass ( named: " _TtC4main20MangledSwiftSubclass " ,
136
157
demangledName: " main.MangledSwiftSubclass " )
137
158
requireClass ( named: " _TtC4main22MangledSwiftSuperclass " ,
@@ -145,6 +166,7 @@ testSuite.test("BasicMangled") {
145
166
testSuite. test ( " Generic " )
146
167
. skip ( . custom( { getClassHookMissing } ,
147
168
reason: " objc_getClass hook not present " ) )
169
+ . requireOwnProcess ( )
148
170
. code {
149
171
requireClass ( named: " main.ConstrainedSwiftSubclass " )
150
172
requireClass ( named: " main.ConstrainedSwiftSuperclass " )
@@ -155,6 +177,7 @@ testSuite.test("Generic")
155
177
testSuite. test ( " GenericMangled " )
156
178
. skip ( . custom( { getClassHookMissing } ,
157
179
reason: " objc_getClass hook not present " ) )
180
+ . requireOwnProcess ( )
158
181
. code {
159
182
requireClass ( named: " _TtC4main24ConstrainedSwiftSubclass " ,
160
183
demangledName: " main.ConstrainedSwiftSubclass " )
@@ -169,6 +192,7 @@ testSuite.test("GenericMangled")
169
192
testSuite. test ( " ResilientSubclass " )
170
193
. skip ( . custom( { getClassHookMissing } ,
171
194
reason: " objc_getClass hook not present " ) )
195
+ . requireOwnProcess ( )
172
196
. code {
173
197
requireClass ( named: " main.ResilientSubclass " )
174
198
requireClass ( named: " main.ResilientSuperclass " )
@@ -181,6 +205,7 @@ testSuite.test("ResilientSubclass")
181
205
testSuite. test ( " ResilientField " )
182
206
. skip ( . custom( { getClassHookMissing } ,
183
207
reason: " objc_getClass hook not present " ) )
208
+ . requireOwnProcess ( )
184
209
. code {
185
210
requireClass ( named: " main.ResilientFieldSubclassSwift " )
186
211
requireClass ( named: " main.ResilientFieldSuperclassSwift " )
@@ -195,6 +220,23 @@ testSuite.test("ResilientField")
195
220
expectEqual ( ResilientFieldSubclassObjC ( ) . subvalue. i, 4 )
196
221
}
197
222
223
+ testSuite. test ( " ResilientNSObject " )
224
+ . skip ( . custom( { getClassHookMissing } ,
225
+ reason: " objc_getClass hook not present " ) )
226
+ . requireOwnProcess ( )
227
+ . code {
228
+ requireClass ( named: " _TtC4main27ResilientSubclassOfNSObject " ,
229
+ demangledName: " main.ResilientSubclassOfNSObject " )
230
+ requireClass ( named: " _TtC4main34ResilientSubclassOfGenericNSObject " ,
231
+ demangledName: " main.ResilientSubclassOfGenericNSObject " )
232
+ requireClass ( named: " _TtC4main35ResilientSubclassOfConcreteNSObject " ,
233
+ demangledName: " main.ResilientSubclassOfConcreteNSObject " )
234
+
235
+ expectEqual ( ResilientSubclassOfNSObject ( ) . subvalue. i, 5 )
236
+ expectEqual ( ResilientSubclassOfGenericNSObject ( ) . subvalue. i, 6 )
237
+ expectEqual ( ResilientSubclassOfConcreteNSObject ( ) . subvalue. i, 7 )
238
+ }
239
+
198
240
testSuite. test ( " NotPresent " ) {
199
241
// This class does not exist.
200
242
expectNil ( NSClassFromString ( " main.ThisClassDoesNotExist " ) ) ;
@@ -207,4 +249,3 @@ testSuite.test("NotPresent") {
207
249
}
208
250
209
251
runAllTests ( )
210
-
0 commit comments