diff options
Diffstat (limited to 'test/continuations/run/while2.scala')
-rw-r--r-- | test/continuations/run/while2.scala | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/continuations/run/while2.scala b/test/continuations/run/while2.scala new file mode 100644 index 0000000000..f36288929e --- /dev/null +++ b/test/continuations/run/while2.scala @@ -0,0 +1,23 @@ +// $Id$ + +import scala.util.continuations._ + + +object Test { + + def foo1(): Int @cps[Unit] = 2 + def foo2(): Int @cps[Unit] = shift { k => println("up"); k(2); println("down") } + + def test(): Unit @cps[Unit] = { + var x = 0 + while (x < 9000) { // pick number large enough to require tail-call opt + x += (if (x % 1000 != 0) foo1() else foo2()) + } + println(x) + } + + def main(args: Array[String]): Any = { + reset(test()) + } + +}
\ No newline at end of file |