add safety test cases for multi-object for loops

This commit is contained in:
Andrew Kelley
2023-02-18 19:17:05 -07:00
parent 40c4c25e2b
commit 15d767c621
2 changed files with 48 additions and 0 deletions

View 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

View 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