| 1 | pub const CallModifier = enum { |
| 2 | /// Equivalent to function call syntax. |
| 3 | auto, |
| 4 | |
| 5 | /// Prevents tail call optimization. This guarantees that the return |
| 6 | /// address will point to the callsite, as opposed to the callsite's |
| 7 | /// callsite. If the call is otherwise required to be tail-called |
| 8 | /// or inlined, a compile error is emitted instead. |
| 9 | never_tail, |
| 10 | |
| 11 | /// Guarantees that the call will not be inlined. If the call is |
| 12 | /// otherwise required to be inlined, a compile error is emitted instead. |
| 13 | never_inline, |
| 14 | |
| 15 | /// Asserts that the function call will not suspend. This allows a |
| 16 | /// non-async function to call an async function. |
| 17 | no_suspend, |
| 18 | |
| 19 | /// Guarantees that the call will be generated with tail call optimization. |
| 20 | /// If this is not possible, a compile error is emitted instead. |
| 21 | always_tail, |
| 22 | |
| 23 | /// Guarantees that the call will be inlined at the callsite. |
| 24 | /// If this is not possible, a compile error is emitted instead. |
| 25 | always_inline, |
| 26 | |
| 27 | /// Evaluates the call at compile-time. If the call cannot be completed at |
| 28 | /// compile-time, a compile error is emitted instead. |
| 29 | compile_time, |
| 30 | }; |
| 31 | |
| 32 | // syntax |