| ... | @@ -30628,11 +30628,18 @@ fn coerceArrayLike( | ... | @@ -30628,11 +30628,18 @@ fn coerceArrayLike( |
| 30628 | return block.addTyOp(.array_to_vector, dest_ty, inst); | 30628 | return block.addTyOp(.array_to_vector, dest_ty, inst); |
| 30629 | } | 30629 | } |
| 30630 | | 30630 | |
| 30631 | const element_vals = try sema.arena.alloc(InternPool.Index, dest_len); | 30631 | const dest_len_including_sent = try sema.usizeCast(block, dest_ty_src, dest_ty.arrayLenIncludingSentinel(zcu)); |
| 30632 | const element_refs = try sema.arena.alloc(Air.Inst.Ref, dest_len); | 30632 | const element_vals = try sema.arena.alloc(InternPool.Index, dest_len_including_sent); |
| | 30633 | const element_refs = try sema.arena.alloc(Air.Inst.Ref, dest_len_including_sent); |
| 30633 | var runtime_src: ?LazySrcLoc = null; | 30634 | var runtime_src: ?LazySrcLoc = null; |
| 30634 | | 30635 | |
| 30635 | for (element_vals, element_refs, 0..) |*val, *ref, i| { | 30636 | for (element_vals, element_refs, 0..) |*val, *ref, i| { |
| | 30637 | if (i == dest_len) { |
| | 30638 | const sentinel_val = dest_ty.sentinel(zcu).?; |
| | 30639 | val.* = sentinel_val.toIntern(); |
| | 30640 | ref.* = Air.internedToRef(sentinel_val.toIntern()); |
| | 30641 | break; |
| | 30642 | } |
| 30636 | const index_ref = Air.internedToRef((try pt.intValue(.usize, i)).toIntern()); | 30643 | const index_ref = Air.internedToRef((try pt.intValue(.usize, i)).toIntern()); |
| 30637 | const src = inst_src; // TODO better source location | 30644 | const src = inst_src; // TODO better source location |
| 30638 | const elem_src = inst_src; // TODO better source location | 30645 | const elem_src = inst_src; // TODO better source location |