@@ -79,6 +79,17 @@ distributed actor MaybeSystem {
79
79
}
80
80
}
81
81
82
+ distributed actor MaybeAfterAssign {
83
+ var x : Int
84
+ init ? ( fail: Bool ) {
85
+ actorSystem = FakeActorSystem ( )
86
+ if fail {
87
+ return nil
88
+ }
89
+ x = 100
90
+ }
91
+ }
92
+
82
93
// ==== Fake Transport ---------------------------------------------------------
83
94
84
95
struct ActorAddress : Sendable , Hashable , Codable {
@@ -222,10 +233,12 @@ func test() async {
222
233
test. append ( try ? Throwy ( system: system, doThrow: true ) )
223
234
// CHECK: assign type:Throwy, id:ActorAddress(address: "[[ID4:.*]]")
224
235
// CHECK-NOT: ready
236
+ // CHECK: resign id:ActorAddress(address: "[[ID4]]")
225
237
226
238
test. append ( try ? ThrowBeforeFullyInit ( system: system, doThrow: true ) )
227
239
// CHECK: assign type:ThrowBeforeFullyInit, id:ActorAddress(address: "[[ID5:.*]]")
228
240
// CHECK-NOT: ready
241
+ // CHECK: resign id:ActorAddress(address: "[[ID5]]")
229
242
230
243
test. append ( await PickATransport2 ( other: 1 , thesystem: system) )
231
244
// CHECK: assign type:PickATransport2, id:ActorAddress(address: "[[ID6:.*]]")
@@ -240,6 +253,15 @@ func test() async {
240
253
// CHECK: assign type:MaybeSystem, id:ActorAddress(address: "[[ID8:.*]]")
241
254
// CHECK: ready actor:main.MaybeSystem, id:ActorAddress(address: "[[ID8]]")
242
255
256
+ test. append ( MaybeAfterAssign ( fail: true ) )
257
+ // CHECK: assign type:MaybeAfterAssign, id:ActorAddress(address: "[[ID9:.*]]")
258
+ // CHECK-NOT: ready
259
+ // CHECK-NEXT: resign id:ActorAddress(address: "[[ID9]]")
260
+
261
+ test. append ( MaybeAfterAssign ( fail: false ) )
262
+ // CHECK: assign type:MaybeAfterAssign, id:ActorAddress(address: "[[ID10:.*]]")
263
+ // CHECK-NEXT: ready actor:main.MaybeAfterAssign, id:ActorAddress(address: "[[ID10]]")
264
+
243
265
// the following tests fail to initialize the actor's identity.
244
266
print ( " -- start of no-assign tests -- " )
245
267
test. append ( MaybeSystem ( nil ) )
@@ -249,14 +271,18 @@ func test() async {
249
271
// CHECK-NOT: assign
250
272
// CHECK: -- end of no-assign tests --
251
273
274
+
275
+ // resigns that come out of the deinits:
276
+
252
277
// CHECK-DAG: resign id:ActorAddress(address: "[[ID1]]")
253
278
// CHECK-DAG: resign id:ActorAddress(address: "[[ID2]]")
254
279
// CHECK-DAG: resign id:ActorAddress(address: "[[ID3]]")
255
- // MISSING-CHECK-DAG: resign id:ActorAddress(address: "[[ID4]]") // FIXME: should eventually work (rdar://84533820).
256
- // MISSING-CHECK-DAG: resign id:ActorAddress(address: "[[ID5]]") // FIXME: should eventually work (rdar://84533820).
280
+
257
281
// CHECK-DAG: resign id:ActorAddress(address: "[[ID6]]")
258
282
// CHECK-DAG: resign id:ActorAddress(address: "[[ID7]]")
259
283
// CHECK-DAG: resign id:ActorAddress(address: "[[ID8]]")
284
+
285
+ // CHECK-DAG: resign id:ActorAddress(address: "[[ID10]]")
260
286
}
261
287
262
288
@main struct Main {
0 commit comments