diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-02-19 10:10:59 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-19 10:10:59 -0500 |
| commit | 0bb178bbb2451238a326c6e916ecf38fbc34cab1 (patch) | |
| tree | b2499481c929ba1497d6eef8b85cc46205f953ab /test/cases/compile_errors | |
| parent | 346ec15c5005e523c2a1d4b967ee7a4e5d1e9775 (diff) | |
| parent | 5fc6bbe71eeecb195d2cda2a2522e7fd04749d5b (diff) | |
| download | zig-0bb178bbb2451238a326c6e916ecf38fbc34cab1.tar.gz zig-0bb178bbb2451238a326c6e916ecf38fbc34cab1.zip | |
Merge pull request #14671 from ziglang/multi-object-for
implement multi-object for loops
Diffstat (limited to 'test/cases/compile_errors')
| -rw-r--r-- | test/cases/compile_errors/for.zig | 40 | ||||
| -rw-r--r-- | test/cases/compile_errors/for_discard_unbounded.zig | 10 | ||||
| -rw-r--r-- | test/cases/compile_errors/for_empty.zig | 11 | ||||
| -rw-r--r-- | test/cases/compile_errors/for_extra_capture.zig | 12 | ||||
| -rw-r--r-- | test/cases/compile_errors/for_extra_condition.zig | 11 | ||||
| -rw-r--r-- | test/cases/compile_errors/for_unbounded.zig | 11 | ||||
| -rw-r--r-- | test/cases/compile_errors/invalid_pointer_for_var_type.zig | 2 | ||||
| -rw-r--r-- | test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig | 4 |
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 _; } } |
