| ... | @@ -28986,7 +28986,7 @@ fn coerceTupleToStruct( | ... | @@ -28986,7 +28986,7 @@ fn coerceTupleToStruct( |
| 28986 | } | 28986 | } |
| 28987 | | 28987 | |
| 28988 | const fields = struct_ty.structFields(mod); | 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 | const field_refs = try sema.arena.alloc(Air.Inst.Ref, field_vals.len); | 28990 | const field_refs = try sema.arena.alloc(Air.Inst.Ref, field_vals.len); |
| 28991 | @memset(field_refs, .none); | 28991 | @memset(field_refs, .none); |
| 28992 | | 28992 | |
| ... | @@ -29017,7 +29017,8 @@ fn coerceTupleToStruct( | ... | @@ -29017,7 +29017,8 @@ fn coerceTupleToStruct( |
| 29017 | } | 29017 | } |
| 29018 | if (runtime_src == null) { | 29018 | if (runtime_src == null) { |
| 29019 | if (try sema.resolveMaybeUndefVal(coerced)) |field_val| { | 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 | } else { | 29022 | } else { |
| 29022 | runtime_src = field_src; | 29023 | runtime_src = field_src; |
| 29023 | } | 29024 | } |
| ... | @@ -29045,7 +29046,8 @@ fn coerceTupleToStruct( | ... | @@ -29045,7 +29046,8 @@ fn coerceTupleToStruct( |
| 29045 | continue; | 29046 | continue; |
| 29046 | } | 29047 | } |
| 29047 | if (runtime_src == null) { | 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 | } else { | 29051 | } else { |
| 29050 | field_ref.* = try sema.addConstant(field.ty, field.default_val); | 29052 | field_ref.* = try sema.addConstant(field.ty, field.default_val); |
| 29051 | } | 29053 | } |
| ... | @@ -29062,10 +29064,14 @@ fn coerceTupleToStruct( | ... | @@ -29062,10 +29064,14 @@ fn coerceTupleToStruct( |
| 29062 | return block.addAggregateInit(struct_ty, field_refs); | 29064 | return block.addAggregateInit(struct_ty, field_refs); |
| 29063 | } | 29065 | } |
| 29064 | | 29066 | |
| 29065 | return sema.addConstant( | 29067 | assert(struct_ty.ip_index != .none); |
| 29066 | struct_ty, | 29068 | const struct_val = try mod.intern(.{ .aggregate = .{ |
| 29067 | try Value.Tag.aggregate.create(sema.arena, field_vals), | 29069 | .ty = struct_ty.ip_index, |
| 29068 | ); | 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 | fn coerceTupleToTuple( | 29077 | fn coerceTupleToTuple( |