| ... | ... | @@ -28986,7 +28986,7 @@ fn coerceTupleToStruct( |
| 28986 | 28986 | } |
| 28987 | 28987 | |
| 28988 | 28988 | const fields = struct_ty.structFields(mod); |
| 28989 | | const field_vals = try sema.arena.alloc(Value, fields.count()); |
| 28989 | const field_vals = try sema.arena.alloc(InternPool.Index, fields.count()); |
| 28990 | 28990 | const field_refs = try sema.arena.alloc(Air.Inst.Ref, field_vals.len); |
| 28991 | 28991 | @memset(field_refs, .none); |
| 28992 | 28992 | |
| ... | ... | @@ -29017,7 +29017,8 @@ fn coerceTupleToStruct( |
| 29017 | 29017 | } |
| 29018 | 29018 | if (runtime_src == null) { |
| 29019 | 29019 | if (try sema.resolveMaybeUndefVal(coerced)) |field_val| { |
| 29020 | | field_vals[field_index] = field_val; |
| 29020 | assert(field_val.ip_index != .none); |
| 29021 | field_vals[field_index] = field_val.ip_index; |
| 29021 | 29022 | } else { |
| 29022 | 29023 | runtime_src = field_src; |
| 29023 | 29024 | } |
| ... | ... | @@ -29045,7 +29046,8 @@ fn coerceTupleToStruct( |
| 29045 | 29046 | continue; |
| 29046 | 29047 | } |
| 29047 | 29048 | if (runtime_src == null) { |
| 29048 | | field_vals[i] = field.default_val; |
| 29049 | assert(field.default_val.ip_index != .none); |
| 29050 | field_vals[i] = field.default_val.ip_index; |
| 29049 | 29051 | } else { |
| 29050 | 29052 | field_ref.* = try sema.addConstant(field.ty, field.default_val); |
| 29051 | 29053 | } |
| ... | ... | @@ -29062,10 +29064,14 @@ fn coerceTupleToStruct( |
| 29062 | 29064 | return block.addAggregateInit(struct_ty, field_refs); |
| 29063 | 29065 | } |
| 29064 | 29066 | |
| 29065 | | return sema.addConstant( |
| 29066 | | struct_ty, |
| 29067 | | try Value.Tag.aggregate.create(sema.arena, field_vals), |
| 29068 | | ); |
| 29067 | assert(struct_ty.ip_index != .none); |
| 29068 | const struct_val = try mod.intern(.{ .aggregate = .{ |
| 29069 | .ty = struct_ty.ip_index, |
| 29070 | .storage = .{ .elems = field_vals }, |
| 29071 | } }); |
| 29072 | errdefer mod.intern_pool.remove(struct_val); |
| 29073 | |
| 29074 | return sema.addConstant(struct_ty, struct_val.toValue()); |
| 29069 | 29075 | } |
| 29070 | 29076 | |
| 29071 | 29077 | fn coerceTupleToTuple( |