@@ -66,7 +66,10 @@ struct ActorAddress: ActorIdentity {
66
66
}
67
67
68
68
@available ( SwiftStdlib 5 . 5 , * )
69
- struct FakeTransport : ActorTransport {
69
+ final class FakeTransport : @unchecked Sendable , ActorTransport {
70
+
71
+ var n = 0
72
+
70
73
func decodeIdentity( from decoder: Decoder ) throws -> AnyActorIdentity {
71
74
print ( " decode identity from: \( decoder) " )
72
75
fatalError ( " not implemented \( #function) " )
@@ -80,7 +83,8 @@ struct FakeTransport: ActorTransport {
80
83
81
84
func assignIdentity< Act> ( _ actorType: Act . Type ) -> AnyActorIdentity
82
85
where Act: DistributedActor {
83
- let address = ActorAddress ( parse: " xxx " )
86
+ n += 1
87
+ let address = ActorAddress ( parse: " addr- \( n) " )
84
88
print ( " assign type: \( actorType) , address: \( address) " )
85
89
return . init( address)
86
90
}
@@ -99,7 +103,6 @@ struct FakeTransport: ActorTransport {
99
103
@available ( SwiftStdlib 5 . 5 , * )
100
104
func test( ) {
101
105
let transport = FakeTransport ( )
102
- let address = ActorAddress ( parse: " xxx " )
103
106
104
107
// no lifecycle things make sense for a normal actor, double check we didn't emit them
105
108
print ( " before A " )
@@ -108,35 +111,44 @@ func test() {
108
111
// CHECK: before A
109
112
// CHECK: after A
110
113
111
- _ = DA ( transport: transport)
114
+ _ = { ( ) -> DA in
115
+ DA ( transport: transport)
116
+ } ( )
112
117
// CHECK: assign type:DA, address:[[ADDRESS:.*]]
113
- // CHECK: ready actor:main.DA, address:AnyActorIdentity(ActorAddress(address: "xxx "))
114
- // CHECK: resign address:AnyActorIdentity(ActorAddress(address: "xxx "))
118
+ // CHECK: ready actor:main.DA, address:AnyActorIdentity(ActorAddress(address: "[[ADDR1:addr-[0-9]]] "))
119
+ // CHECK: resign address:AnyActorIdentity(ActorAddress(address: "[[ADDR1]] "))
115
120
116
- _ = DA_userDefined ( transport: transport)
121
+ _ = { ( ) -> DA_userDefined in
122
+ DA_userDefined ( transport: transport)
123
+ } ( )
117
124
// CHECK: assign type:DA_userDefined, address:[[ADDRESS:.*]]
118
- // CHECK: ready actor:main.DA_userDefined, address:AnyActorIdentity(ActorAddress(address: "xxx "))
119
- // CHECK: resign address:AnyActorIdentity(ActorAddress(address: "xxx "))
125
+ // CHECK: ready actor:main.DA_userDefined, address:AnyActorIdentity(ActorAddress(address: "[[ADDR2:addr-[0-9]]] "))
126
+ // CHECK: resign address:AnyActorIdentity(ActorAddress(address: "[[ADDR2]] "))
120
127
121
128
// resign must happen as the _last thing_ after user-deinit completed
122
- _ = DA_userDefined2 ( transport: transport)
129
+ _ = { ( ) -> DA_userDefined2 in
130
+ DA_userDefined2 ( transport: transport)
131
+ } ( )
123
132
// CHECK: assign type:DA_userDefined2, address:[[ADDRESS:.*]]
124
- // CHECK: ready actor:main.DA_userDefined2, address:AnyActorIdentity(ActorAddress(address: "xxx "))
125
- // CHECK: Deinitializing AnyActorIdentity(ActorAddress(address: "xxx "))
126
- // CHECK-NEXT: resign address:AnyActorIdentity(ActorAddress(address: "xxx "))
133
+ // CHECK: ready actor:main.DA_userDefined2, address:AnyActorIdentity(ActorAddress(address: "[[ADDR3:addr-[0-9]]] "))
134
+ // CHECK: Deinitializing AnyActorIdentity(ActorAddress(address: "[[ADDR3]] "))
135
+ // CHECK-NEXT: resign address:AnyActorIdentity(ActorAddress(address: "[[ADDR3]] "))
127
136
128
137
// resign must happen as the _last thing_ after user-deinit completed
129
- _ = DA_state ( transport: transport)
138
+ _ = { ( ) -> DA_state in
139
+ DA_state ( transport: transport)
140
+ } ( )
130
141
// CHECK: assign type:DA_state, address:[[ADDRESS:.*]]
131
- // CHECK: ready actor:main.DA_state, address:AnyActorIdentity(ActorAddress(address: "xxx "))
132
- // CHECK: Deinitializing AnyActorIdentity(ActorAddress(address: "xxx "))
133
- // CHECK-NEXT: resign address:AnyActorIdentity(ActorAddress(address: "xxx "))
142
+ // CHECK: ready actor:main.DA_state, address:AnyActorIdentity(ActorAddress(address: "[[ADDR4:addr-[0-9]]] "))
143
+ // CHECK: Deinitializing AnyActorIdentity(ActorAddress(address: "[[ADDR4]] "))
144
+ // CHECK-NEXT: resign address:AnyActorIdentity(ActorAddress(address: "[[ADDR4]] "))
134
145
135
146
// a remote actor should not resign it's address, it was never "assigned" it
136
- print ( " before " )
137
- _ = try ! DA_userDefined2 . resolve ( . init( address) , using: transport)
138
- // CHECK: before
139
- // CHECK-NEXT: resolve type:DA_userDefined2, address:AnyActorIdentity(ActorAddress(address: "xxx"))
147
+ let address = ActorAddress ( parse: " remote-1 " )
148
+ _ = { ( ) -> DA_userDefined2 in
149
+ try ! DA_userDefined2 . resolve ( . init( address) , using: transport)
150
+ } ( )
151
+ // CHECK-NEXT: resolve type:DA_userDefined2, address:AnyActorIdentity(ActorAddress(address: "[[ADDR5:remote-1]]"))
140
152
// CHECK-NEXT: Deinitializing
141
153
}
142
154
0 commit comments