| ... | ... | @@ -28214,12 +28214,12 @@ fn elemVal( |
| 28214 | 28214 | .many, .c => { |
| 28215 | 28215 | const maybe_indexable_val = try sema.resolveDefinedValue(block, indexable_src, indexable); |
| 28216 | 28216 | const maybe_index_val = try sema.resolveDefinedValue(block, elem_index_src, elem_index); |
| 28217 | const elem_ty = indexable_ty.elemType2(zcu); |
| 28217 | 28218 | |
| 28218 | 28219 | ct: { |
| 28219 | 28220 | const indexable_val = maybe_indexable_val orelse break :ct; |
| 28220 | 28221 | const index_val = maybe_index_val orelse break :ct; |
| 28221 | 28222 | const index: usize = @intCast(try index_val.toUnsignedIntSema(pt)); |
| 28222 | | const elem_ty = indexable_ty.elemType2(zcu); |
| 28223 | 28223 | const many_ptr_ty = try pt.manyConstPtrType(elem_ty); |
| 28224 | 28224 | const many_ptr_val = try pt.getCoerced(indexable_val, many_ptr_ty); |
| 28225 | 28225 | const elem_ptr_ty = try pt.singleConstPtrType(elem_ty); |
| ... | ... | @@ -28228,6 +28228,10 @@ fn elemVal( |
| 28228 | 28228 | return Air.internedToRef((try pt.getCoerced(elem_val, elem_ty)).toIntern()); |
| 28229 | 28229 | } |
| 28230 | 28230 | |
| 28231 | if (try sema.typeHasOnePossibleValue(elem_ty)) |elem_only_value| { |
| 28232 | return Air.internedToRef(elem_only_value.toIntern()); |
| 28233 | } |
| 28234 | |
| 28231 | 28235 | try sema.checkLogicalPtrOperation(block, src, indexable_ty); |
| 28232 | 28236 | return block.addBinOp(.ptr_elem_val, indexable, elem_index); |
| 28233 | 28237 | }, |