| ... | ... | @@ -20499,6 +20499,14 @@ fn tupleFieldPtr( |
| 20499 | 20499 | .@"addrspace" = tuple_ptr_ty.ptrAddressSpace(), |
| 20500 | 20500 | }); |
| 20501 | 20501 | |
| 20502 | if (tuple_ty.structFieldValueComptime(field_index)) |default_val| { |
| 20503 | const val = try Value.Tag.comptime_field_ptr.create(sema.arena, .{ |
| 20504 | .field_ty = field_ty, |
| 20505 | .field_val = default_val, |
| 20506 | }); |
| 20507 | return sema.addConstant(ptr_field_ty, val); |
| 20508 | } |
| 20509 | |
| 20502 | 20510 | if (try sema.resolveMaybeUndefVal(block, tuple_ptr_src, tuple_ptr)) |tuple_ptr_val| { |
| 20503 | 20511 | return sema.addConstant( |
| 20504 | 20512 | ptr_field_ty, |
| ... | ... | @@ -20510,14 +20518,6 @@ fn tupleFieldPtr( |
| 20510 | 20518 | ); |
| 20511 | 20519 | } |
| 20512 | 20520 | |
| 20513 | | if (tuple_ty.structFieldValueComptime(field_index)) |default_val| { |
| 20514 | | const val = try Value.Tag.comptime_field_ptr.create(sema.arena, .{ |
| 20515 | | .field_ty = field_ty, |
| 20516 | | .field_val = default_val, |
| 20517 | | }); |
| 20518 | | return sema.addConstant(ptr_field_ty, val); |
| 20519 | | } |
| 20520 | | |
| 20521 | 20521 | if (!init) { |
| 20522 | 20522 | try sema.validateRuntimeElemAccess(block, field_index_src, field_ty, tuple_ty, tuple_ptr_src); |
| 20523 | 20523 | } |
| ... | ... | @@ -23241,6 +23241,16 @@ fn beginComptimePtrLoad( |
| 23241 | 23241 | break :blk deref; |
| 23242 | 23242 | }, |
| 23243 | 23243 | |
| 23244 | .comptime_field_ptr => blk: { |
| 23245 | const comptime_field_ptr = ptr_val.castTag(.comptime_field_ptr).?.data; |
| 23246 | break :blk ComptimePtrLoadKit{ |
| 23247 | .parent = null, |
| 23248 | .pointee = .{ .ty = comptime_field_ptr.field_ty, .val = comptime_field_ptr.field_val }, |
| 23249 | .is_mutable = false, |
| 23250 | .ty_without_well_defined_layout = comptime_field_ptr.field_ty, |
| 23251 | }; |
| 23252 | }, |
| 23253 | |
| 23244 | 23254 | .opt_payload_ptr, |
| 23245 | 23255 | .eu_payload_ptr, |
| 23246 | 23256 | => blk: { |