aboutsummaryrefslogtreecommitdiff
path: root/src/test/run-pass/tail-cps.rs
blob: fec48a748c6fd39352a1f5723547eb03f1225f03 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// -*- rust -*-

fn checktrue(bool res) -> bool {
  assert (res);
  ret true;
}

fn main() {
  auto k = checktrue;
  evenk(42, k);
  oddk(45, k);
}

fn evenk(int n, fn(bool) -> bool k) -> bool {
  log "evenk";
  log n;
  if (n == 0) {
    be k(true);
  }
  else {
    be oddk(n - 1, k);
  }
}

fn oddk(int n, fn(bool) -> bool k) -> bool {
  log "oddk";
  log n;
  if (n == 0) {
    be k(false);
  }
  else {
    be evenk(n - 1, k);
  }
}