authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-21 15:34:57-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-21 15:34:57-07:00
log71a9b35c0f853a4af49470f83763578eb4cf06e0
treef877bf5d5043e6456992fe71423f584a6b124eba
parent9abc3232a8c02f0fc6bef6ad0bad56a3804e6bc3

Sema: fix missed pointer access OPV


1 files changed, 5 insertions(+), 1 deletions(-)

src/Sema.zig+5-1
......@@ -28214,12 +28214,12 @@ fn elemVal(
2821428214 .many, .c => {
2821528215 const maybe_indexable_val = try sema.resolveDefinedValue(block, indexable_src, indexable);
2821628216 const maybe_index_val = try sema.resolveDefinedValue(block, elem_index_src, elem_index);
28217 const elem_ty = indexable_ty.elemType2(zcu);
2821728218
2821828219 ct: {
2821928220 const indexable_val = maybe_indexable_val orelse break :ct;
2822028221 const index_val = maybe_index_val orelse break :ct;
2822128222 const index: usize = @intCast(try index_val.toUnsignedIntSema(pt));
28222 const elem_ty = indexable_ty.elemType2(zcu);
2822328223 const many_ptr_ty = try pt.manyConstPtrType(elem_ty);
2822428224 const many_ptr_val = try pt.getCoerced(indexable_val, many_ptr_ty);
2822528225 const elem_ptr_ty = try pt.singleConstPtrType(elem_ty);
......@@ -28228,6 +28228,10 @@ fn elemVal(
2822828228 return Air.internedToRef((try pt.getCoerced(elem_val, elem_ty)).toIntern());
2822928229 }
2823028230
28231 if (try sema.typeHasOnePossibleValue(elem_ty)) |elem_only_value| {
28232 return Air.internedToRef(elem_only_value.toIntern());
28233 }
28234
2823128235 try sema.checkLogicalPtrOperation(block, src, indexable_ty);
2823228236 return block.addBinOp(.ptr_elem_val, indexable, elem_index);
2823328237 },