aboutsummaryrefslogtreecommitdiff
path: root/test/cases/compile_errors
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-02-19 10:20:19 -0700
committerAndrew Kelley <andrew@ziglang.org>2023-02-19 10:20:19 -0700
commitb5b634e4e8a2a1fe32fba50ccd175257b4213936 (patch)
tree4eed625db81dd4d6907e386084df36ec3ac85687 /test/cases/compile_errors
parentefdc94c10712f610e7de5e49fd9cd6f88b4bbbae (diff)
parent02f5d2673f1bb21e7329acdd664fed565ecd4317 (diff)
downloadzig-b5b634e4e8a2a1fe32fba50ccd175257b4213936.tar.gz
zig-b5b634e4e8a2a1fe32fba50ccd175257b4213936.zip
Merge remote-tracking branch 'origin/master' into llvm16
Diffstat (limited to 'test/cases/compile_errors')
-rw-r--r--test/cases/compile_errors/for.zig40
-rw-r--r--test/cases/compile_errors/for_discard_unbounded.zig10
-rw-r--r--test/cases/compile_errors/for_empty.zig11
-rw-r--r--test/cases/compile_errors/for_extra_capture.zig12
-rw-r--r--test/cases/compile_errors/for_extra_condition.zig11
-rw-r--r--test/cases/compile_errors/for_unbounded.zig11
-rw-r--r--test/cases/compile_errors/invalid_pointer_for_var_type.zig2
-rw-r--r--test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig4
8 files changed, 98 insertions, 3 deletions
diff --git a/test/cases/compile_errors/for.zig b/test/cases/compile_errors/for.zig
new file mode 100644
index 0000000000..5bd3aa0c64
--- /dev/null
+++ b/test/cases/compile_errors/for.zig
@@ -0,0 +1,40 @@
+export fn a() void {
+ for (0..10, 10..21) |i, j| {
+ _ = i; _ = j;
+ }
+}
+export fn b() void {
+ const s1 = "hello";
+ const s2 = true;
+ for (s1, s2) |i, j| {
+ _ = i; _ = j;
+ }
+}
+export fn c() void {
+ var buf: [10]u8 = undefined;
+ for (buf) |*byte| {
+ _ = byte;
+ }
+}
+export fn d() void {
+ const x: [*]const u8 = "hello";
+ const y: [*]const u8 = "world";
+ for (x, 0.., y) |x1, x2, x3| {
+ _ = x1; _ = x2; _ = x3;
+ }
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: non-matching for loop lengths
+// :2:11: note: length 10 here
+// :2:19: note: length 11 here
+// :9:14: error: type 'bool' does not support indexing
+// :9:14: note: for loop operand must be an array, slice, tuple, or vector
+// :15:16: error: pointer capture of non pointer type '[10]u8'
+// :15:10: note: consider using '&' here
+// :22:5: error: unbounded for loop
+// :22:10: note: type '[*]const u8' has no upper bound
+// :22:18: note: type '[*]const u8' has no upper bound
diff --git a/test/cases/compile_errors/for_discard_unbounded.zig b/test/cases/compile_errors/for_discard_unbounded.zig
new file mode 100644
index 0000000000..93434d0c21
--- /dev/null
+++ b/test/cases/compile_errors/for_discard_unbounded.zig
@@ -0,0 +1,10 @@
+export fn a() void {
+ for (0..10, 10..) |i, _| {
+ _ = i;
+ }
+}
+// error
+// backend=stage2
+// target=native
+//
+// :2:27: error: discard of unbounded counter
diff --git a/test/cases/compile_errors/for_empty.zig b/test/cases/compile_errors/for_empty.zig
new file mode 100644
index 0000000000..a4cb5b3c4e
--- /dev/null
+++ b/test/cases/compile_errors/for_empty.zig
@@ -0,0 +1,11 @@
+export fn b() void {
+ for () |i| {
+ _ = i;
+ }
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:10: error: expected expression, found ')'
diff --git a/test/cases/compile_errors/for_extra_capture.zig b/test/cases/compile_errors/for_extra_capture.zig
new file mode 100644
index 0000000000..a137b57d51
--- /dev/null
+++ b/test/cases/compile_errors/for_extra_capture.zig
@@ -0,0 +1,12 @@
+export fn b() void {
+ for (0..10) |i, j| {
+ _ = i; _ = j;
+ }
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: extra capture in for loop
+// :2:21: note: run 'zig fmt' to upgrade your code automatically
diff --git a/test/cases/compile_errors/for_extra_condition.zig b/test/cases/compile_errors/for_extra_condition.zig
new file mode 100644
index 0000000000..11c013acee
--- /dev/null
+++ b/test/cases/compile_errors/for_extra_condition.zig
@@ -0,0 +1,11 @@
+export fn a() void {
+ for (0..10, 10..20) |i| {
+ _ = i;
+ }
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:19: error: for input is not captured
diff --git a/test/cases/compile_errors/for_unbounded.zig b/test/cases/compile_errors/for_unbounded.zig
new file mode 100644
index 0000000000..5d05b1061f
--- /dev/null
+++ b/test/cases/compile_errors/for_unbounded.zig
@@ -0,0 +1,11 @@
+export fn b() void {
+ for (0..) |i| {
+ _ = i;
+ }
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: unbounded for loop
diff --git a/test/cases/compile_errors/invalid_pointer_for_var_type.zig b/test/cases/compile_errors/invalid_pointer_for_var_type.zig
index ee193bab15..d94c7bd3b8 100644
--- a/test/cases/compile_errors/invalid_pointer_for_var_type.zig
+++ b/test/cases/compile_errors/invalid_pointer_for_var_type.zig
@@ -1,7 +1,7 @@
extern fn ext() usize;
var bytes: [ext()]u8 = undefined;
export fn f() void {
- for (bytes) |*b, i| {
+ for (&bytes, 0..) |*b, i| {
b.* = @as(u8, i);
}
}
diff --git a/test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig b/test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig
index 1fb79e11bd..b527d0d17e 100644
--- a/test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig
+++ b/test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig
@@ -1,6 +1,6 @@
export fn returns() void {
- for ([_]void{}) |_, i| {
- for ([_]void{}) |_, j| {
+ for ([_]void{}, 0..) |_, i| {
+ for ([_]void{}, 0..) |_, j| {
return _;
}
}