1617a3babSopenharmony_ci#version 330 core
2617a3babSopenharmony_ci
3617a3babSopenharmony_civoid main() {}
4617a3babSopenharmony_ci
5617a3babSopenharmony_cifloat bar(int);
6617a3babSopenharmony_ci
7617a3babSopenharmony_ci// direct recursion
8617a3babSopenharmony_ci
9617a3babSopenharmony_civoid self()
10617a3babSopenharmony_ci{
11617a3babSopenharmony_ci    self();
12617a3babSopenharmony_ci}
13617a3babSopenharmony_ci
14617a3babSopenharmony_ci// two-level recursion
15617a3babSopenharmony_ci
16617a3babSopenharmony_civoid foo(float)
17617a3babSopenharmony_ci{
18617a3babSopenharmony_ci	bar(2);
19617a3babSopenharmony_ci}
20617a3babSopenharmony_ci
21617a3babSopenharmony_cifloat bar(int)
22617a3babSopenharmony_ci{
23617a3babSopenharmony_ci	foo(4.2);
24617a3babSopenharmony_ci
25617a3babSopenharmony_ci	return 3.2;
26617a3babSopenharmony_ci}
27617a3babSopenharmony_ci
28617a3babSopenharmony_ci// four-level, out of order
29617a3babSopenharmony_ci
30617a3babSopenharmony_civoid B();
31617a3babSopenharmony_civoid D();
32617a3babSopenharmony_civoid A() { B(); }
33617a3babSopenharmony_civoid C() { D(); }
34617a3babSopenharmony_civoid B() { C(); }
35617a3babSopenharmony_civoid D() { A(); }
36617a3babSopenharmony_ci
37617a3babSopenharmony_ci// high degree
38617a3babSopenharmony_ci
39617a3babSopenharmony_civoid BT();
40617a3babSopenharmony_civoid DT();
41617a3babSopenharmony_civoid AT() { BT(); BT(); BT(); }
42617a3babSopenharmony_civoid CT() { DT(); AT(); DT(); BT(); }
43617a3babSopenharmony_civoid BT() { CT(); CT(); CT(); }
44617a3babSopenharmony_civoid DT() { AT(); }
45