blob: ba14cf8031064018c902445926b2954071bca8fa [file] [log] [blame]
// Expect 3 errors
// TODO(skia:12137) Today, we detect these as errors because we do not allow calls to undefined
// functions. That produces three errors (one for each function calling an undefined function).
// After we support calling declared (but not defined) functions, we should instead emit one
// error per cycle.
// Simple recursion is not allowed, even with branching:
int fibonacci(int n) { return n <= 1 ? n : fibonacci(n - 1) + fibonacci(n - 2); }
// We also detect more complex cycles in the call-graph of functions:
bool is_even(int n);
bool is_odd (int n) { return n == 0 ? false : is_even(n - 1); }
bool is_even(int n) { return n == 0 ? true : is_odd (n - 1); }