66// 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
77// RUN: %target-codesign %t/%target-library-name(resilient_class)
88
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)
1013// RUN: %target-codesign %t/main
1114
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}
1316
1417
1518// REQUIRES: executable_test
@@ -22,6 +25,7 @@ import ObjectiveC
2225import Foundation
2326import resilient_struct
2427import resilient_class
28+ import resilient_objc_class
2529
2630// Old OS versions do not have this hook.
2731let getClassHookMissing = {
@@ -110,6 +114,19 @@ class ResilientFieldSubclassObjC : ResilientFieldSuperclassObjC {
110114 var subvalue = ResilientInt ( i: 4 )
111115}
112116
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+ }
113130
114131func requireClass( named name: String , demangledName: String ) {
115132 for _ in 1 ... 2 {
@@ -124,14 +141,18 @@ func requireClass(named name: String) {
124141 return requireClass ( named: name, demangledName: name)
125142}
126143
127- testSuite. test ( " Basic " ) {
144+ testSuite. test ( " Basic " )
145+ . requireOwnProcess ( )
146+ . code {
128147 requireClass ( named: " main.SwiftSubclass " )
129148 requireClass ( named: " main.SwiftSuperclass " )
130149 requireClass ( named: " main.ObjCSubclass " )
131150 requireClass ( named: " main.ObjCSuperclass " )
132151}
133152
134- testSuite. test ( " BasicMangled " ) {
153+ testSuite. test ( " BasicMangled " )
154+ . requireOwnProcess ( )
155+ . code {
135156 requireClass ( named: " _TtC4main20MangledSwiftSubclass " ,
136157 demangledName: " main.MangledSwiftSubclass " )
137158 requireClass ( named: " _TtC4main22MangledSwiftSuperclass " ,
@@ -145,6 +166,7 @@ testSuite.test("BasicMangled") {
145166testSuite. test ( " Generic " )
146167 . skip ( . custom( { getClassHookMissing } ,
147168 reason: " objc_getClass hook not present " ) )
169+ . requireOwnProcess ( )
148170 . code {
149171 requireClass ( named: " main.ConstrainedSwiftSubclass " )
150172 requireClass ( named: " main.ConstrainedSwiftSuperclass " )
@@ -155,6 +177,7 @@ testSuite.test("Generic")
155177testSuite. test ( " GenericMangled " )
156178 . skip ( . custom( { getClassHookMissing } ,
157179 reason: " objc_getClass hook not present " ) )
180+ . requireOwnProcess ( )
158181 . code {
159182 requireClass ( named: " _TtC4main24ConstrainedSwiftSubclass " ,
160183 demangledName: " main.ConstrainedSwiftSubclass " )
@@ -169,6 +192,7 @@ testSuite.test("GenericMangled")
169192testSuite. test ( " ResilientSubclass " )
170193 . skip ( . custom( { getClassHookMissing } ,
171194 reason: " objc_getClass hook not present " ) )
195+ . requireOwnProcess ( )
172196 . code {
173197 requireClass ( named: " main.ResilientSubclass " )
174198 requireClass ( named: " main.ResilientSuperclass " )
@@ -181,6 +205,7 @@ testSuite.test("ResilientSubclass")
181205testSuite. test ( " ResilientField " )
182206 . skip ( . custom( { getClassHookMissing } ,
183207 reason: " objc_getClass hook not present " ) )
208+ . requireOwnProcess ( )
184209 . code {
185210 requireClass ( named: " main.ResilientFieldSubclassSwift " )
186211 requireClass ( named: " main.ResilientFieldSuperclassSwift " )
@@ -195,6 +220,23 @@ testSuite.test("ResilientField")
195220 expectEqual ( ResilientFieldSubclassObjC ( ) . subvalue. i, 4 )
196221}
197222
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+
198240testSuite. test ( " NotPresent " ) {
199241 // This class does not exist.
200242 expectNil ( NSClassFromString ( " main.ThisClassDoesNotExist " ) ) ;
@@ -207,4 +249,3 @@ testSuite.test("NotPresent") {
207249}
208250
209251runAllTests ( )
210-
0 commit comments