18
18
import _Distributed
19
19
20
20
final class Obj : @unchecked Sendable , Codable { }
21
+
21
22
struct LargeStruct : Sendable , Codable {
23
+ var q : String
24
+ var a : Int
25
+ var b : Int64
26
+ var c : Double
27
+ var d : String
28
+ }
29
+
30
+ enum E : Sendable , Codable {
31
+ case foo, bar
22
32
}
23
33
24
34
distributed actor Greeter {
25
- distributed func hello( ) {
26
- print ( " EXECUTING HELLO " )
35
+ distributed func empty( ) {
36
+ }
37
+
38
+ distributed func hello( ) -> String {
39
+ return " Hello, World! "
40
+ }
41
+
42
+ distributed func answer( ) -> Int {
43
+ return 42
44
+ }
45
+
46
+ distributed func largeResult( ) -> LargeStruct {
47
+ . init( q: " question " , a: 42 , b: 1 , c: 2.0 , d: " Lorum ipsum " )
48
+ }
49
+
50
+ distributed func enumResult( ) -> E {
51
+ . bar
27
52
}
28
53
}
29
54
@@ -102,7 +127,11 @@ struct FakeResultHandler: DistributedTargetInvocationResultHandler {
102
127
typealias DefaultDistributedActorSystem = FakeActorSystem
103
128
104
129
// actual mangled name:
105
- let helloName = " $s4main7GreeterC5helloyyFTE "
130
+ let emptyName = " $s4main7GreeterC5emptyyyFTE "
131
+ let helloName = " $s4main7GreeterC5helloSSyFTE "
132
+ let answerName = " $s4main7GreeterC6answerSiyFTE "
133
+ let largeResultName = " $s4main7GreeterC11largeResultAA11LargeStructVyFTE "
134
+ let enumResult = " $s4main7GreeterC10enumResultAA1EOyFTE "
106
135
107
136
func test( ) async throws {
108
137
let system = FakeActorSystem ( )
@@ -112,14 +141,51 @@ func test() async throws {
112
141
// act as if we decoded an Invocation:
113
142
let invocation = FakeInvocation ( )
114
143
144
+ try await system. executeDistributedTarget (
145
+ on: local,
146
+ mangledTargetName: emptyName,
147
+ invocation: invocation,
148
+ handler: FakeResultHandler ( )
149
+ )
150
+
151
+ // CHECK: RETURN: ()
152
+
115
153
try await system. executeDistributedTarget (
116
154
on: local,
117
155
mangledTargetName: helloName,
118
156
invocation: invocation,
119
157
handler: FakeResultHandler ( )
120
158
)
121
159
122
- // CHECK: done
160
+ // CHECK: RETURN: Hello, World!
161
+
162
+ try await system. executeDistributedTarget (
163
+ on: local,
164
+ mangledTargetName: answerName,
165
+ invocation: invocation,
166
+ handler: FakeResultHandler ( )
167
+ )
168
+
169
+ // CHECK: RETURN: 42
170
+
171
+ try await system. executeDistributedTarget (
172
+ on: local,
173
+ mangledTargetName: largeResultName,
174
+ invocation: invocation,
175
+ handler: FakeResultHandler ( )
176
+ )
177
+
178
+ // CHECK: RETURN: LargeStruct(q: "question", a: 42, b: 1, c: 2.0, d: "Lorum ipsum")
179
+
180
+ try await system. executeDistributedTarget (
181
+ on: local,
182
+ mangledTargetName: enumResult,
183
+ invocation: invocation,
184
+ handler: FakeResultHandler ( )
185
+ )
186
+ // CHECK: RETURN: bar
187
+
188
+ // CHECK-NEXT: done
123
189
print ( " done " )
124
190
}
125
191
0 commit comments