diff options
Diffstat (limited to 'tests/ui/recursion/recursion-tail-cps.rs')
| -rw-r--r-- | tests/ui/recursion/recursion-tail-cps.rs | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/tests/ui/recursion/recursion-tail-cps.rs b/tests/ui/recursion/recursion-tail-cps.rs index fe99dadf795..9014be0ce98 100644 --- a/tests/ui/recursion/recursion-tail-cps.rs +++ b/tests/ui/recursion/recursion-tail-cps.rs @@ -1,17 +1,34 @@ +//! Verify that mutually recursive functions use CPS to avoid overflowing the stack. + //@ run-pass -fn checktrue(rs: bool) -> bool { assert!(rs); return true; } +fn checktrue(rs: bool) -> bool { + assert!(rs); + return true; +} -pub fn main() { let k = checktrue; evenk(42, k); oddk(45, k); } +pub fn main() { + let k = checktrue; + evenk(42, k); + oddk(45, k); +} fn evenk(n: isize, k: fn(bool) -> bool) -> bool { println!("evenk"); println!("{}", n); - if n == 0 { return k(true); } else { return oddk(n - 1, k); } + if n == 0 { + return k(true); + } else { + return oddk(n - 1, k); + } } fn oddk(n: isize, k: fn(bool) -> bool) -> bool { println!("oddk"); println!("{}", n); - if n == 0 { return k(false); } else { return evenk(n - 1, k); } + if n == 0 { + return k(false); + } else { + return evenk(n - 1, k); + } } |
