add safety test cases for multi-object for loops
This commit is contained in:
24
test/cases/safety/for_len_mismatch.zig
Normal file
24
test/cases/safety/for_len_mismatch.zig
Normal file
@@ -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
|
||||
24
test/cases/safety/for_len_mismatch_three.zig
Normal file
24
test/cases/safety/for_len_mismatch_three.zig
Normal file
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user