aboutsummaryrefslogtreecommitdiff
path: root/test/cases/compile_errors
diff options
context:
space:
mode:
authorr00ster91 <r00ster91@proton.me>2023-04-29 04:19:58 +0200
committerr00ster91 <r00ster91@proton.me>2023-04-29 04:19:58 +0200
commitbd8b5c25ece2fa158196381004db6e655226576c (patch)
tree770abdc5199160fa4cb5b2eafb0baa06a300e2cd /test/cases/compile_errors
parent0c9c9117bacfcff2b11ab658b89f192e27fc7c3d (diff)
downloadzig-bd8b5c25ece2fa158196381004db6e655226576c.tar.gz
zig-bd8b5c25ece2fa158196381004db6e655226576c.zip
Sema: emit error for always_inline call of noinline function
Fixes #15489 This also lays the groundwork for exposing the whether or not a function is noinline in std.builtin.Fn as an `is_noinline: bool` field if we ever want to do that.
Diffstat (limited to 'test/cases/compile_errors')
-rw-r--r--test/cases/compile_errors/bad_usage_of_call.zig20
1 files changed, 16 insertions, 4 deletions
diff --git a/test/cases/compile_errors/bad_usage_of_call.zig b/test/cases/compile_errors/bad_usage_of_call.zig
index c0b632bef6..3669cda3bf 100644
--- a/test/cases/compile_errors/bad_usage_of_call.zig
+++ b/test/cases/compile_errors/bad_usage_of_call.zig
@@ -14,14 +14,25 @@ export fn entry5(c: bool) void {
var baz = if (c) &baz1 else &baz2;
@call(.compile_time, baz, .{});
}
+export fn entry6() void {
+ _ = @call(.always_inline, dummy, .{});
+}
+export fn entry7() void {
+ _ = @call(.always_inline, dummy2, .{});
+}
pub export fn entry() void {
var call_me: *const fn () void = undefined;
@call(.always_inline, call_me, .{});
}
+
fn foo() void {}
-fn bar() callconv(.Inline) void {}
+inline fn bar() void {}
fn baz1() void {}
fn baz2() void {}
+noinline fn dummy() u32 {
+ return 0;
+}
+noinline fn dummy2() void {}
// error
// backend=stage2
@@ -30,7 +41,8 @@ fn baz2() void {}
// :2:23: error: expected a tuple, found 'void'
// :5:21: error: unable to perform 'never_inline' call at compile-time
// :8:21: error: unable to perform 'never_tail' call at compile-time
-// :11:5: error: no-inline call of inline function
+// :11:5: error: 'never_inline' call of inline function
// :15:26: error: modifier 'compile_time' requires a comptime-known function
-// :19:27: error: modifier 'always_inline' requires a comptime-known function
-
+// :18:9: error: 'always_inline' call of noinline function
+// :21:9: error: 'always_inline' call of noinline function
+// :25:27: error: modifier 'always_inline' requires a comptime-known function