Sema: fix missed pointer access OPV
This commit is contained in:
@@ -28214,12 +28214,12 @@ fn elemVal(
|
||||
.many, .c => {
|
||||
const maybe_indexable_val = try sema.resolveDefinedValue(block, indexable_src, indexable);
|
||||
const maybe_index_val = try sema.resolveDefinedValue(block, elem_index_src, elem_index);
|
||||
const elem_ty = indexable_ty.elemType2(zcu);
|
||||
|
||||
ct: {
|
||||
const indexable_val = maybe_indexable_val orelse break :ct;
|
||||
const index_val = maybe_index_val orelse break :ct;
|
||||
const index: usize = @intCast(try index_val.toUnsignedIntSema(pt));
|
||||
const elem_ty = indexable_ty.elemType2(zcu);
|
||||
const many_ptr_ty = try pt.manyConstPtrType(elem_ty);
|
||||
const many_ptr_val = try pt.getCoerced(indexable_val, many_ptr_ty);
|
||||
const elem_ptr_ty = try pt.singleConstPtrType(elem_ty);
|
||||
@@ -28228,6 +28228,10 @@ fn elemVal(
|
||||
return Air.internedToRef((try pt.getCoerced(elem_val, elem_ty)).toIntern());
|
||||
}
|
||||
|
||||
if (try sema.typeHasOnePossibleValue(elem_ty)) |elem_only_value| {
|
||||
return Air.internedToRef(elem_only_value.toIntern());
|
||||
}
|
||||
|
||||
try sema.checkLogicalPtrOperation(block, src, indexable_ty);
|
||||
return block.addBinOp(.ptr_elem_val, indexable, elem_index);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user