aboutsummaryrefslogtreecommitdiff
path: root/tests/actor/accept/pointer_scalar.zc
blob: 219129a80829a3ac3f7429753dec595c62a1b9f9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
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;
}