aboutsummaryrefslogtreecommitdiff
path: root/tests/actor/accept/graphs.zc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/actor/accept/graphs.zc')
-rw-r--r--tests/actor/accept/graphs.zc14
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;
+}