]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass/obj-dtor.rs
Populate tree.
[rust.git] / src / test / run-pass / obj-dtor.rs
1 obj worker(chan[int] c) {
2   drop {
3     log "in dtor";
4     c <| 10;
5   }
6 }
7
8 io fn do_work(chan[int] c) {
9   log "in child task";
10   {
11     let worker w = worker(c);
12     log "constructed worker";
13   }
14   log "destructed worker";
15   while(true) {
16     // Deadlock-condition not handled properly yet, need to avoid
17     // exiting the child early.
18     c <| 11;
19     yield;
20   }
21 }
22
23 io fn main() {
24   let port[int] p = port();
25   log "spawning worker";
26   auto w = spawn do_work(chan(p));
27   let int i;
28   log "parent waiting for shutdown";
29   i <- p;
30   log "received int";
31   check (i == 10);
32   log "int is OK, child-dtor ran as expected";
33 }