diff --git a/test/cases/safety/for_len_mismatch.zig b/test/cases/safety/for_len_mismatch.zig new file mode 100644 index 0000000000..871e203f61 --- /dev/null +++ b/test/cases/safety/for_len_mismatch.zig @@ -0,0 +1,24 @@ +const std = @import("std"); + +pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usize) noreturn { + _ = stack_trace; + if (std.mem.eql(u8, message, "for loop over objects with non-equal lengths")) { + std.process.exit(0); + } + std.process.exit(1); +} + +pub fn main() !void { + var runtime_i: usize = 1; + var j: usize = 3; + var slice = "too long"; + for (runtime_i..j, slice) |a, b| { + _ = a; + _ = b; + return error.TestFailed; + } + return error.TestFailed; +} +// run +// backend=llvm +// target=native diff --git a/test/cases/safety/for_len_mismatch_three.zig b/test/cases/safety/for_len_mismatch_three.zig new file mode 100644 index 0000000000..95bc244269 --- /dev/null +++ b/test/cases/safety/for_len_mismatch_three.zig @@ -0,0 +1,24 @@ +const std = @import("std"); + +pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usize) noreturn { + _ = stack_trace; + if (std.mem.eql(u8, message, "for loop over objects with non-equal lengths")) { + std.process.exit(0); + } + std.process.exit(1); +} + +pub fn main() !void { + var slice: []const u8 = "hello"; + for (10..20, slice, 20..30) |a, b, c| { + _ = a; + _ = b; + _ = c; + return error.TestFailed; + } + return error.TestFailed; +} +// run +// backend=llvm +// target=native +