| ... | ... | @@ -23636,7 +23636,7 @@ fn panicIndexOutOfBounds( |
| 23636 | 23636 | try sema.safetyCheckFormatted(parent_block, ok, "panicOutOfBounds", &.{ index, len }); |
| 23637 | 23637 | } |
| 23638 | 23638 | |
| 23639 | | fn panicStartLargerThanEnd( |
| 23639 | fn panicStartGreaterThanEnd( |
| 23640 | 23640 | sema: *Sema, |
| 23641 | 23641 | parent_block: *Block, |
| 23642 | 23642 | start: Air.Inst.Ref, |
| ... | ... | @@ -29490,8 +29490,10 @@ fn analyzeSlice( |
| 29490 | 29490 | const slice_sentinel = if (sentinel_opt != .none) sentinel else null; |
| 29491 | 29491 | |
| 29492 | 29492 | // requirement: start <= end |
| 29493 | var need_start_gt_end_check = true; |
| 29493 | 29494 | if (try sema.resolveDefinedValue(block, end_src, end)) |end_val| { |
| 29494 | 29495 | if (try sema.resolveDefinedValue(block, start_src, start)) |start_val| { |
| 29496 | need_start_gt_end_check = false; |
| 29495 | 29497 | if (!by_length and !(try sema.compareAll(start_val, .lte, end_val, Type.usize))) { |
| 29496 | 29498 | return sema.fail( |
| 29497 | 29499 | block, |
| ... | ... | @@ -29545,9 +29547,9 @@ fn analyzeSlice( |
| 29545 | 29547 | } |
| 29546 | 29548 | } |
| 29547 | 29549 | |
| 29548 | | if (!by_length and block.wantSafety() and !block.is_comptime) { |
| 29550 | if (!by_length and block.wantSafety() and !block.is_comptime and need_start_gt_end_check) { |
| 29549 | 29551 | // requirement: start <= end |
| 29550 | | try sema.panicStartLargerThanEnd(block, start, end); |
| 29552 | try sema.panicStartGreaterThanEnd(block, start, end); |
| 29551 | 29553 | } |
| 29552 | 29554 | const new_len = if (by_length) |
| 29553 | 29555 | try sema.coerce(block, Type.usize, uncasted_end_opt, end_src) |