| ... | ... | @@ -24597,10 +24597,15 @@ fn elemPtr( |
| 24597 | 24597 | const indexable_ptr_src = src; // TODO better source location |
| 24598 | 24598 | const indexable_ptr_ty = sema.typeOf(indexable_ptr); |
| 24599 | 24599 | const target = sema.mod.getTarget(); |
| 24600 | |
| 24600 | 24601 | const indexable_ty = switch (indexable_ptr_ty.zigTypeTag()) { |
| 24601 | 24602 | .Pointer => indexable_ptr_ty.elemType(), |
| 24602 | 24603 | else => return sema.fail(block, indexable_ptr_src, "expected pointer, found '{}'", .{indexable_ptr_ty.fmt(sema.mod)}), |
| 24603 | 24604 | }; |
| 24605 | if (!indexable_ty.isIndexable()) { |
| 24606 | return sema.fail(block, src, "element access of non-indexable type '{}'", .{indexable_ty.fmt(sema.mod)}); |
| 24607 | } |
| 24608 | |
| 24604 | 24609 | switch (indexable_ty.zigTypeTag()) { |
| 24605 | 24610 | .Array, .Vector => return sema.elemPtrArray(block, src, indexable_ptr_src, indexable_ptr, elem_index_src, elem_index, init, oob_safety), |
| 24606 | 24611 | .Struct => { |
| ... | ... | @@ -24629,10 +24634,11 @@ fn elemPtrOneLayerOnly( |
| 24629 | 24634 | ) CompileError!Air.Inst.Ref { |
| 24630 | 24635 | const indexable_src = src; // TODO better source location |
| 24631 | 24636 | const indexable_ty = sema.typeOf(indexable); |
| 24637 | const target = sema.mod.getTarget(); |
| 24638 | |
| 24632 | 24639 | if (!indexable_ty.isIndexable()) { |
| 24633 | 24640 | return sema.fail(block, src, "element access of non-indexable type '{}'", .{indexable_ty.fmt(sema.mod)}); |
| 24634 | 24641 | } |
| 24635 | | const target = sema.mod.getTarget(); |
| 24636 | 24642 | |
| 24637 | 24643 | switch (indexable_ty.ptrSize()) { |
| 24638 | 24644 | .Slice => return sema.elemPtrSlice(block, src, indexable_src, indexable, elem_index_src, elem_index, oob_safety), |