diff --git a/test/cases/safety/for_len_mismatch.zig b/test/cases/safety/for_len_mismatch.zig new file mode 100644 index 0000000000000000000000000000000000000000..871e203f61c5d23cb2207516a5b6a7f529403133 --- /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 0000000000000000000000000000000000000000..95bc24426994431d120df88e931fb9fb640118f9 --- /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 +