diff options
Diffstat (limited to 'test/cases/safety/bad union field access.zig')
-rw-r--r-- | test/cases/safety/bad union field access.zig | 23 |
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); } |