aboutsummaryrefslogtreecommitdiff
path: root/test/cases/compile_errors
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-12-18 16:24:13 -0500
committerGitHub <noreply@github.com>2022-12-18 16:24:13 -0500
commitaca9c74e80e106309b9783ff251ab0cdd3fb9626 (patch)
tree16c65995ac6d3b434af61c4cd61a191b81dd93a0 /test/cases/compile_errors
parentd93edadead45e447e6bc16c0934a3031a06d0fd8 (diff)
parent9bb1104e373dec192fb2a22d48b023330ddbaeae (diff)
downloadzig-aca9c74e80e106309b9783ff251ab0cdd3fb9626.tar.gz
zig-aca9c74e80e106309b9783ff251ab0cdd3fb9626.zip
Merge pull request #13914 from Vexu/variadic
implement defining C variadic functions
Diffstat (limited to 'test/cases/compile_errors')
-rw-r--r--test/cases/compile_errors/invalid_capture_type.zig24
-rw-r--r--test/cases/compile_errors/invalid_variadic_function.zig12
-rw-r--r--test/cases/compile_errors/stage1/obj/invalid_maybe_type.zig9
3 files changed, 36 insertions, 9 deletions
diff --git a/test/cases/compile_errors/invalid_capture_type.zig b/test/cases/compile_errors/invalid_capture_type.zig
new file mode 100644
index 0000000000..3813021c95
--- /dev/null
+++ b/test/cases/compile_errors/invalid_capture_type.zig
@@ -0,0 +1,24 @@
+export fn f1() void {
+ if (true) |x| { _ = x; }
+}
+export fn f2() void {
+ if (@as(usize, 5)) |_| {}
+}
+export fn f3() void {
+ if (@as(usize, 5)) |_| {} else |_| {}
+}
+export fn f4() void {
+ if (null) |_| {}
+}
+export fn f5() void {
+ if (error.Foo) |_| {} else |_| {}
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:9: error: expected optional type, found 'bool'
+// :5:9: error: expected optional type, found 'usize'
+// :8:9: error: expected error union type, found 'usize'
+// :14:9: error: expected error union type, found 'error{Foo}'
diff --git a/test/cases/compile_errors/invalid_variadic_function.zig b/test/cases/compile_errors/invalid_variadic_function.zig
new file mode 100644
index 0000000000..997db9fee8
--- /dev/null
+++ b/test/cases/compile_errors/invalid_variadic_function.zig
@@ -0,0 +1,12 @@
+fn foo(...) void {}
+fn bar(a: anytype, ...) callconv(a) void {}
+
+comptime { _ = foo; }
+comptime { _ = bar; }
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:1: error: variadic function must have 'C' calling convention
+// :2:1: error: generic function cannot be variadic
diff --git a/test/cases/compile_errors/stage1/obj/invalid_maybe_type.zig b/test/cases/compile_errors/stage1/obj/invalid_maybe_type.zig
deleted file mode 100644
index cb075c36b7..0000000000
--- a/test/cases/compile_errors/stage1/obj/invalid_maybe_type.zig
+++ /dev/null
@@ -1,9 +0,0 @@
-export fn f() void {
- if (true) |x| { _ = x; }
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:9: error: expected optional type, found 'bool'