| // Expect 1 errors (with f_one(int), f_two, f_three in cycle) |
| |
| // Complex recursion spanning several functions with overloads, etc. |
| |
| void f_one(bool b); |
| void f_one(int n); |
| void f_two(int n); |
| void f_three(int n); |
| void f_four(int n); |
| |
| void f_one(bool b) { |
| int n = b ? 1 : 0; |
| f_one(n); |
| } |
| |
| void f_one(int n) { |
| if (n > 0) { |
| f_four(n); |
| } else { |
| f_two(n); |
| } |
| } |
| |
| void f_two(int n) { |
| for (int i = 0; i < 4; ++i) { |
| f_three(n); |
| } |
| } |
| |
| void f_three(int n) { |
| f_one(n); |
| } |
| |
| void f_four(int n) {} |
| |
| /*%%* |
| potential recursion (function call cycle) not allowed: |
| void f_one(int n) |
| void f_two(int n) |
| void f_three(int n) |
| void f_one(int n) |
| *%%*/ |