rust/src/test/run-pass/acyclic-unwind.rs

40 lines
702 B
Rust
Raw Normal View History

// xfail-stage0
// xfail-stage1
// xfail-stage2
// xfail-stage3
2010-06-23 23:03:09 -05:00
// -*- rust -*-
2011-04-19 15:35:49 -05:00
fn f(chan[int] c)
2010-06-23 23:03:09 -05:00
{
type t = tup(int,int,int);
// Allocate a box.
let @t x = @tup(1,2,3);
2010-06-23 23:03:09 -05:00
// Signal parent that we've allocated a box.
2010-06-23 23:03:09 -05:00
c <| 1;
while (true) {
// spin waiting for the parent to kill us.
log "child waiting to die...";
2010-08-16 17:04:33 -05:00
// while waiting to die, the messages we are
// sending to the channel are never received
// by the parent, therefore this test cases drops
// messages on the floor
2010-06-23 23:03:09 -05:00
c <| 1;
}
}
2011-04-19 15:35:49 -05:00
fn main() {
2010-06-23 23:03:09 -05:00
let port[int] p = port();
spawn f(chan(p));
let int i;
// synchronize on event from child.
p |> i;
2010-06-23 23:03:09 -05:00
log "parent exiting, killing child";
}