diff options
Diffstat (limited to 'tests/actor/accept/graphs.zc')
| -rw-r--r-- | tests/actor/accept/graphs.zc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/actor/accept/graphs.zc b/tests/actor/accept/graphs.zc new file mode 100644 index 0000000..f90469c --- /dev/null +++ b/tests/actor/accept/graphs.zc @@ -0,0 +1,14 @@ +namespace; +include rt, actor; +typecheck on; +struct Node { int value; Node* next; } +struct Message { char* text; int[?] numbers; Node* node; } +int handle(Message* m) { m.text[0] = 'X'; m.numbers[0] += 10; return rt.len_w(m.text) + m.numbers[0] + m.node.next.value; } +fn main() { + actor.Actor<Message*, int>* a = rt.new(actor.Actor<Message*, int>); + a.spawn(handle); let result = 0; a.recv(fn(int n) { result = n; return 0; }); + Message* m = rt.new(Message); m.text = rt.new(char, 4); m.text[0] = 'a'; m.text[1] = 'b'; m.text[2] = 'c'; + m.numbers = rt.new(int[?]); push(m.numbers, 5); m.node = rt.new(Node); m.node.value = 7; m.node.next = m.node; + a.send(m); a.await(); + rt.put_n(result); rt.put_c(' '); rt.put_c(m.text[0]); rt.put_c(' '); rt.put_n(m.numbers[0]); rt.put_c(10); a.close(); return 0; +} |
