@@ -27074,6 +27074,26 @@ fn fieldPtr(
27074
27074
if (ip.stringEqlSlice(field_name, "len")) {
27075
27075
const int_val = try mod.intValue(Type.usize, inner_ty.arrayLen(mod));
27076
27076
return anonDeclRef(sema, int_val.toIntern());
27077
+ } else if (ip.stringEqlSlice(field_name, "ptr") and is_pointer_to) {
27078
+ const ptr_info = object_ty.ptrInfo(mod);
27079
+ const new_ptr_ty = try sema.ptrType(.{
27080
+ .child = Type.fromInterned(ptr_info.child).childType(mod).toIntern(),
27081
+ .sentinel = if (inner_ty.sentinel(mod)) |s| s.toIntern() else .none,
27082
+ .flags = .{
27083
+ .size = .Many,
27084
+ .alignment = ptr_info.flags.alignment,
27085
+ .is_const = ptr_info.flags.is_const,
27086
+ .is_volatile = ptr_info.flags.is_volatile,
27087
+ .is_allowzero = ptr_info.flags.is_allowzero,
27088
+ .address_space = ptr_info.flags.address_space,
27089
+ .vector_index = ptr_info.flags.vector_index,
27090
+ },
27091
+ .packed_offset = ptr_info.packed_offset,
27092
+ });
27093
+ const result_ty = try sema.ptrType(.{
27094
+ .child = new_ptr_ty,
27095
+ });
27096
+ return sema.coerce(block, result_ty, object_ptr, src);
27077
27097
} else {
27078
27098
return sema.fail(
27079
27099
block,
0 commit comments