# Tests of Starlark recursion and while statement. # This is a "chunked" file: each "---" effectively starts a new file. # option:recursion load("assert.star", "assert") def sum(n): r = 0 while n > 0: r += n n -= 1 return r def fib(n): if n <= 1: return 1 return fib(n-1) + fib(n-2) def while_break(n): r = 0 while n > 0: if n == 5: break r += n n -= 1 return r def while_continue(n): r = 0 while n > 0: if n % 2 == 0: n -= 1 continue r += n n -= 1 return r assert.eq(fib(5), 8) assert.eq(sum(5), 5+4+3+2+1) assert.eq(while_break(10), 40) assert.eq(while_continue(10), 25)