aboutsummaryrefslogtreecommitdiff
path: root/test/compile_errors.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-12-06 15:49:47 -0500
committerGitHub <noreply@github.com>2019-12-06 15:49:47 -0500
commit525b1e8fb4abc38143a6ae47272fd5d016ba7eeb (patch)
treeee16b05de3828936971df6d977e75d5825b10547 /test/compile_errors.zig
parentd28aa38db71a861fd2036efbb22e57c1d34a5615 (diff)
parent656cc33f8d49cb5e79cd3f9f8f56963747d43ed6 (diff)
downloadzig-525b1e8fb4abc38143a6ae47272fd5d016ba7eeb.tar.gz
zig-525b1e8fb4abc38143a6ae47272fd5d016ba7eeb.zip
Merge pull request #3856 from ziglang/builtin-call
introduce `@call` and remove other builtin calls
Diffstat (limited to 'test/compile_errors.zig')
-rw-r--r--test/compile_errors.zig49
1 files changed, 34 insertions, 15 deletions
diff --git a/test/compile_errors.zig b/test/compile_errors.zig
index d3d439aeaf..13e666f49e 100644
--- a/test/compile_errors.zig
+++ b/test/compile_errors.zig
@@ -3,6 +3,36 @@ const builtin = @import("builtin");
pub fn addCases(cases: *tests.CompileErrorContext) void {
cases.add(
+ "bad usage of @call",
+ \\export fn entry1() void {
+ \\ @call(.{}, foo, {});
+ \\}
+ \\export fn entry2() void {
+ \\ comptime @call(.{ .modifier = .never_inline }, foo, .{});
+ \\}
+ \\export fn entry3() void {
+ \\ comptime @call(.{ .modifier = .never_tail }, foo, .{});
+ \\}
+ \\export fn entry4() void {
+ \\ @call(.{ .modifier = .never_inline }, bar, .{});
+ \\}
+ \\export fn entry5(c: bool) void {
+ \\ var baz = if (c) baz1 else baz2;
+ \\ @call(.{ .modifier = .compile_time }, baz, .{});
+ \\}
+ \\fn foo() void {}
+ \\inline fn bar() void {}
+ \\fn baz1() void {}
+ \\fn baz2() void {}
+ ,
+ "tmp.zig:2:21: error: expected tuple or struct, found 'void'",
+ "tmp.zig:5:14: error: unable to perform 'never_inline' call at compile-time",
+ "tmp.zig:8:14: error: unable to perform 'never_tail' call at compile-time",
+ "tmp.zig:11:5: error: no-inline call of inline function",
+ "tmp.zig:15:43: error: unable to evaluate constant expression",
+ );
+
+ cases.add(
\\export async fn foo() void {}
, "tmp.zig:1:1: error: exported function cannot be async");
@@ -14,13 +44,13 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
);
cases.addCase(x: {
- var tc = cases.create("@newStackCall on unsupported target",
+ var tc = cases.create("call with new stack on unsupported target",
+ \\var buf: [10]u8 align(16) = undefined;
\\export fn entry() void {
- \\ var buf: [10]u8 align(16) = undefined;
- \\ @newStackCall(&buf, foo);
+ \\ @call(.{.stack = &buf}, foo, .{});
\\}
\\fn foo() void {}
- , "tmp.zig:3:5: error: target arch 'wasm32' does not support @newStackCall");
+ , "tmp.zig:3:5: error: target arch 'wasm32' does not support calling with a new stack");
tc.target = tests.Target{
.Cross = tests.CrossTarget{
.arch = .wasm32,
@@ -1928,17 +1958,6 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
);
cases.add(
- "@noInlineCall on an inline function",
- \\inline fn foo() void {}
- \\
- \\export fn entry() void {
- \\ @noInlineCall(foo);
- \\}
- ,
- "tmp.zig:4:5: error: no-inline call of inline function",
- );
-
- cases.add(
"comptime continue inside runtime catch",
\\export fn entry(c: bool) void {
\\ const ints = [_]u8{ 1, 2 };