| 1 | export fn entry1() void { |
| 2 | @call(.auto, foo, {}); |
| 3 | } |
| 4 | export fn entry2() void { |
| 5 | comptime @call(.never_inline, foo, .{}); |
| 6 | } |
| 7 | export fn entry3() void { |
| 8 | comptime @call(.never_tail, foo, .{}); |
| 9 | } |
| 10 | export fn entry4() void { |
| 11 | @call(.never_inline, bar, .{}); |
| 12 | } |
| 13 | export fn entry5(c: bool) void { |
| 14 | const baz = if (c) &baz1 else &baz2; |
| 15 | @call(.compile_time, baz, .{}); |
| 16 | } |
| 17 | export fn entry6() void { |
| 18 | _ = @call(.always_inline, dummy, .{}); |
| 19 | } |
| 20 | export fn entry7() void { |
| 21 | _ = @call(.always_inline, dummy2, .{}); |
| 22 | } |
| 23 | pub export fn entry() void { |
| 24 | var call_me: *const fn () void = undefined; |
| 25 | _ = &call_me; |
| 26 | @call(.always_inline, call_me, .{}); |
| 27 | } |
| 28 | |
| 29 | fn foo() void {} |
| 30 | inline fn bar() void {} |
| 31 | fn baz1() void {} |
| 32 | fn baz2() void {} |
| 33 | noinline fn dummy() u32 { |
| 34 | return 0; |
| 35 | } |
| 36 | noinline fn dummy2() void {} |
| 37 | |
| 38 | // error |
| 39 | // |
| 40 | // :2:23: error: expected a tuple, found 'void' |
| 41 | // :5:21: error: unable to perform 'never_inline' call at compile-time |
| 42 | // :8:21: error: unable to perform 'never_tail' call at compile-time |
| 43 | // :11:5: error: cannot perform inline call with 'never_inline' modifier |
| 44 | // :15:26: error: modifier 'compile_time' requires a comptime-known function |
| 45 | // :18:9: error: inline call of noinline function |
| 46 | // :21:9: error: inline call of noinline function |
| 47 | // :26:27: error: modifier 'always_inline' requires a comptime-known function |