aboutsummaryrefslogtreecommitdiff
path: root/tests/actor/accept/pointer_scalar.zc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/actor/accept/pointer_scalar.zc')
-rw-r--r--tests/actor/accept/pointer_scalar.zc13
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/actor/accept/pointer_scalar.zc b/tests/actor/accept/pointer_scalar.zc
new file mode 100644
index 0000000..219129a
--- /dev/null
+++ b/tests/actor/accept/pointer_scalar.zc
@@ -0,0 +1,13 @@
+namespace;
+include rt, actor;
+typecheck on;
+struct Node { int value; }
+struct Message { int marker; Node* node; }
+fn main() {
+ Node* original = rt.new(Node); original.value = 4; let marker = (original as int) + 0;
+ actor.Actor<Message*,int>* a = rt.new(actor.Actor<Message*,int>);
+ a.spawn(fn:int(Message* m) { return m.marker == marker && m.node as int != m.marker && m.node.value == 4; });
+ let result = 0; a.recv(fn(int n) { result = n; return 0; });
+ Message* message = rt.new(Message); message.marker = marker; message.node = original;
+ a.send(message); a.await(); rt.put_n(result); rt.put_c(10); a.close(); return 0;
+}