From 418aa525107319a224a3299eae8d9c8fdfe02c13 Mon Sep 17 00:00:00 2001 From: Michael Sullivan Date: Fri, 8 Jul 2011 14:23:24 -0500 Subject: [PATCH] Add a test that exercises these cases in bind. --- src/test/run-pass/fixed-point-bind-box.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/test/run-pass/fixed-point-bind-box.rs diff --git a/src/test/run-pass/fixed-point-bind-box.rs b/src/test/run-pass/fixed-point-bind-box.rs new file mode 100644 index 000000000000..d53e4655c07c --- /dev/null +++ b/src/test/run-pass/fixed-point-bind-box.rs @@ -0,0 +1,20 @@ +// xfail-stage0 + +fn fix_help[A,B](@fn (@fn (&A) -> B, &A) -> B f, &A x) -> B { + ret f(@bind fix_help(f, _), x); +} + +fn fix[A,B](@fn (@fn (&A) -> B, &A) -> B f) -> (@fn(&A) -> B) { + ret @bind fix_help(f, _); +} + +fn fact_(@fn (&int) -> int f, &int n) -> int { + // fun fact 0 = 1 + ret if (n == 0) { 1 } else { n*f(n-1) }; +} + +fn main() { + auto fact = fix(@fact_); + assert(fact(5) == 120); + assert(fact(2) == 2); +}