aboutsummaryrefslogtreecommitdiff
path: root/lib/std/builtin.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-12-05 17:37:29 -0500
committerAndrew Kelley <andrew@ziglang.org>2019-12-05 17:37:29 -0500
commitef83358eb6702e8541816817e98c3e7279033672 (patch)
tree2d57f0633a84f188cc4bd0c9e25fc0484a39b6f5 /lib/std/builtin.zig
parent1f602fe8c5b3dea9f00f96e70dad73ebce405b49 (diff)
downloadzig-ef83358eb6702e8541816817e98c3e7279033672.tar.gz
zig-ef83358eb6702e8541816817e98c3e7279033672.zip
remove `@noInlineCall` from zig
Diffstat (limited to 'lib/std/builtin.zig')
-rw-r--r--lib/std/builtin.zig26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig
index 791d46bc34..8ac58ad2f4 100644
--- a/lib/std/builtin.zig
+++ b/lib/std/builtin.zig
@@ -379,13 +379,39 @@ pub const CallOptions = struct {
stack: ?[]align(std.Target.stack_align) u8 = null,
pub const Modifier = enum {
+ /// Equivalent to function call syntax.
auto,
+
+ /// Asserts that the function call will not suspend. This allows a
+ /// non-async function to call an async function.
no_async,
+
+ /// The function call will return an async function frame instead of
+ /// the function's result, which is expected to then be awaited.
+ /// This is equivalent to using the `async` keyword in front of function
+ /// call syntax.
async_call,
+
+ /// Prevents tail call optimization. This guarantees that the return
+ /// address will point to the callsite, as opposed to the callsite's
+ /// callsite. If the call is otherwise required to be tail-called
+ /// or inlined, a compile error is emitted instead.
never_tail,
+
+ /// Guarantees that the call will not be inlined. If the call is
+ /// otherwise required to be inlined, a compile error is emitted instead.
never_inline,
+
+ /// Guarantees that the call will be generated with tail call optimization.
+ /// If this is not possible, a compile error is emitted instead.
always_tail,
+
+ /// Guarantees that the call will inlined at the callsite.
+ /// If this is not possible, a compile error is emitted instead.
always_inline,
+
+ /// Evaluates the call at compile-time. If the call cannot be completed at
+ /// compile-time, a compile error is emitted instead.
compile_time,
};
};