1#version 330 core
2
3void main() {}
4
5float bar(int);
6
7// direct recursion
8
9void self()
10{
11    self();
12}
13
14// two-level recursion
15
16void foo(float)
17{
18	bar(2);
19}
20
21float bar(int)
22{
23	foo(4.2);
24
25	return 3.2;
26}
27
28// four-level, out of order
29
30void B();
31void D();
32void A() { B(); }
33void C() { D(); }
34void B() { C(); }
35void D() { A(); }
36
37// high degree
38
39void BT();
40void DT();
41void AT() { BT(); BT(); BT(); }
42void CT() { DT(); AT(); DT(); BT(); }
43void BT() { CT(); CT(); CT(); }
44void DT() { AT(); }
45