summaryrefslogtreecommitdiff
path: root/test/cases/safety/bad union field access.zig
diff options
context:
space:
mode:
Diffstat (limited to 'test/cases/safety/bad union field access.zig')
-rw-r--r--test/cases/safety/bad union field access.zig23
1 files changed, 13 insertions, 10 deletions
diff --git a/test/cases/safety/bad union field access.zig b/test/cases/safety/bad union field access.zig
index d73897f0f3..7258c37a44 100644
--- a/test/cases/safety/bad union field access.zig
+++ b/test/cases/safety/bad union field access.zig
@@ -1,16 +1,19 @@
const std = @import("std");
-pub fn panic(cause: std.builtin.PanicCause, stack_trace: ?*std.builtin.StackTrace, _: ?usize) noreturn {
+pub const Panic = struct {
+ pub const call = panic;
+ pub const unwrapError = std.debug.FormattedPanic.unwrapError;
+ pub const outOfBounds = std.debug.FormattedPanic.outOfBounds;
+ pub const startGreaterThanEnd = std.debug.FormattedPanic.startGreaterThanEnd;
+ pub const sentinelMismatch = std.debug.FormattedPanic.sentinelMismatch;
+ pub const inactiveUnionField = std.debug.FormattedPanic.inactiveUnionField;
+ pub const messages = std.debug.FormattedPanic.messages;
+};
+
+fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usize) noreturn {
_ = stack_trace;
- switch (cause) {
- .inactive_union_field => |info| {
- if (std.mem.eql(u8, info.active, "int") and
- std.mem.eql(u8, info.accessed, "float"))
- {
- std.process.exit(0);
- }
- },
- else => {},
+ if (std.mem.eql(u8, message, "access of union field 'float' while field 'int' is active")) {
+ std.process.exit(0);
}
std.process.exit(1);
}