| author | |
| committer | |
| log | 15d767c62154859724dbf63dd0fdfa4195e33256 |
| tree | 486d1bba7bf8c069b175bb2e5dea5e6b4870fc8f |
| parent | 40c4c25e2b5e2242c3180cd8564dc22697bf363f |
2 files changed, 48 insertions(+), 0 deletions(-)
test/cases/safety/for_len_mismatch.zig created+24| ... | ... | @@ -0,0 +1,24 @@ |
| 1 | const std = @import("std"); | |
| 2 | ||
| 3 | pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usize) noreturn { | |
| 4 | _ = stack_trace; | |
| 5 | if (std.mem.eql(u8, message, "for loop over objects with non-equal lengths")) { | |
| 6 | std.process.exit(0); | |
| 7 | } | |
| 8 | std.process.exit(1); | |
| 9 | } | |
| 10 | ||
| 11 | pub fn main() !void { | |
| 12 | var runtime_i: usize = 1; | |
| 13 | var j: usize = 3; | |
| 14 | var slice = "too long"; | |
| 15 | for (runtime_i..j, slice) |a, b| { | |
| 16 | _ = a; | |
| 17 | _ = b; | |
| 18 | return error.TestFailed; | |
| 19 | } | |
| 20 | return error.TestFailed; | |
| 21 | } | |
| 22 | // run | |
| 23 | // backend=llvm | |
| 24 | // target=native |
test/cases/safety/for_len_mismatch_three.zig created+24| ... | ... | @@ -0,0 +1,24 @@ |
| 1 | const std = @import("std"); | |
| 2 | ||
| 3 | pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usize) noreturn { | |
| 4 | _ = stack_trace; | |
| 5 | if (std.mem.eql(u8, message, "for loop over objects with non-equal lengths")) { | |
| 6 | std.process.exit(0); | |
| 7 | } | |
| 8 | std.process.exit(1); | |
| 9 | } | |
| 10 | ||
| 11 | pub fn main() !void { | |
| 12 | var slice: []const u8 = "hello"; | |
| 13 | for (10..20, slice, 20..30) |a, b, c| { | |
| 14 | _ = a; | |
| 15 | _ = b; | |
| 16 | _ = c; | |
| 17 | return error.TestFailed; | |
| 18 | } | |
| 19 | return error.TestFailed; | |
| 20 | } | |
| 21 | // run | |
| 22 | // backend=llvm | |
| 23 | // target=native | |
| 24 |