master
1inline fn foo(x: i32) i32 {
2 if (x <= 0) {
3 return 0;
4 } else {
5 return x * 2 + foo(x - 1);
6 }
7}
8
9pub export fn entry() void {
10 var x: i32 = 4;
11 _ = &x;
12 _ = foo(x) == 20;
13}
14
15inline fn first() void {
16 second();
17}
18
19inline fn second() void {
20 third();
21}
22
23inline fn third() void {
24 first();
25}
26
27pub export fn entry2() void {
28 first();
29}
30
31// error
32//
33// :5:27: error: inline call is recursive
34// :12:12: note: called inline here
35// :24:10: error: inline call is recursive
36// :20:10: note: called inline here
37// :16:11: note: called inline here
38// :28:10: note: called inline here