aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-11-29 14:29:50 +0200
committerVeikka Tuominen <git@vexu.eu>2022-11-29 15:47:02 +0200
commit6337c04244d9c27cc6535340347d4c127f4742eb (patch)
tree3e70b1474b28a0f10428255648b59ab64a71b35d /lib/std
parent6f9c7e33b956686ebfd4690c7f85a602d0ac9ffe (diff)
downloadzig-6337c04244d9c27cc6535340347d4c127f4742eb.tar.gz
zig-6337c04244d9c27cc6535340347d4c127f4742eb.zip
Sema: improve panic for slice start index being greater than end index
Closes #13689
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/builtin.zig11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig
index 1f7d48ccb9..09833988ae 100644
--- a/lib/std/builtin.zig
+++ b/lib/std/builtin.zig
@@ -863,10 +863,9 @@ pub fn panicOutOfBounds(index: usize, len: usize) noreturn {
std.debug.panicExtra(null, @returnAddress(), "index out of bounds: index {d}, len {d}", .{ index, len });
}
-pub noinline fn returnError(st: *StackTrace) void {
+pub fn panicStartGreaterThanEnd(start: usize, end: usize) noreturn {
@setCold(true);
- @setRuntimeSafety(false);
- addErrRetTraceAddr(st, @returnAddress());
+ std.debug.panicExtra(null, @returnAddress(), "start index {d} is larger than end index {d}", .{ start, end });
}
pub const panic_messages = struct {
@@ -889,6 +888,12 @@ pub const panic_messages = struct {
pub const invalid_enum_value = "invalid enum value";
};
+pub noinline fn returnError(st: *StackTrace) void {
+ @setCold(true);
+ @setRuntimeSafety(false);
+ addErrRetTraceAddr(st, @returnAddress());
+}
+
pub inline fn addErrRetTraceAddr(st: *StackTrace, addr: usize) void {
if (st.index < st.instruction_addresses.len)
st.instruction_addresses[st.index] = addr;