| ... | ... | @@ -17045,17 +17045,9 @@ fn elemVal( |
| 17045 | 17045 | const indexable_val = maybe_indexable_val orelse break :rs indexable_src; |
| 17046 | 17046 | const index_val = maybe_index_val orelse break :rs elem_index_src; |
| 17047 | 17047 | const index = @intCast(usize, index_val.toUnsignedInt(target)); |
| 17048 | | const elem_ty = indexable_ty.elemType2(); |
| 17049 | | |
| 17050 | | var payload: Value.Payload.ElemPtr = .{ .data = .{ |
| 17051 | | .array_ptr = indexable_val, |
| 17052 | | .elem_ty = elem_ty, |
| 17053 | | .index = index, |
| 17054 | | } }; |
| 17055 | | const elem_ptr_val = Value.initPayload(&payload.base); |
| 17056 | | |
| 17048 | const elem_ptr_val = try indexable_val.elemPtr(indexable_ty, sema.arena, index, target); |
| 17057 | 17049 | if (try sema.pointerDeref(block, indexable_src, elem_ptr_val, indexable_ty)) |elem_val| { |
| 17058 | | return sema.addConstant(elem_ty, elem_val); |
| 17050 | return sema.addConstant(indexable_ty.elemType2(), elem_val); |
| 17059 | 17051 | } |
| 17060 | 17052 | break :rs indexable_src; |
| 17061 | 17053 | }; |
| ... | ... | @@ -17310,12 +17302,7 @@ fn elemValSlice( |
| 17310 | 17302 | const sentinel_label: []const u8 = if (slice_sent) " +1 (sentinel)" else ""; |
| 17311 | 17303 | return sema.fail(block, elem_index_src, "index {d} outside slice of length {d}{s}", .{ index, slice_len, sentinel_label }); |
| 17312 | 17304 | } |
| 17313 | | var elem_ptr_pl: Value.Payload.ElemPtr = .{ .data = .{ |
| 17314 | | .array_ptr = slice_val.slicePtr(), |
| 17315 | | .elem_ty = elem_ty, |
| 17316 | | .index = index, |
| 17317 | | } }; |
| 17318 | | const elem_ptr_val = Value.initPayload(&elem_ptr_pl.base); |
| 17305 | const elem_ptr_val = try slice_val.elemPtr(slice_ty, sema.arena, index, target); |
| 17319 | 17306 | if (try sema.pointerDeref(block, slice_src, elem_ptr_val, slice_ty)) |elem_val| { |
| 17320 | 17307 | return sema.addConstant(elem_ty, elem_val); |
| 17321 | 17308 | } |