| ... | @@ -14509,6 +14509,7 @@ fn zirStructInit( | ... | @@ -14509,6 +14509,7 @@ fn zirStructInit( |
| 14509 | var field_i: u32 = 0; | 14509 | var field_i: u32 = 0; |
| 14510 | var extra_index = extra.end; | 14510 | var extra_index = extra.end; |
| 14511 | | 14511 | |
| | 14512 | const is_packed = resolved_ty.containerLayout() == .Packed; |
| 14512 | while (field_i < extra.data.fields_len) : (field_i += 1) { | 14513 | while (field_i < extra.data.fields_len) : (field_i += 1) { |
| 14513 | const item = sema.code.extraData(Zir.Inst.StructInit.Item, extra_index); | 14514 | const item = sema.code.extraData(Zir.Inst.StructInit.Item, extra_index); |
| 14514 | extra_index = item.end; | 14515 | extra_index = item.end; |
| ... | @@ -14535,7 +14536,7 @@ fn zirStructInit( | ... | @@ -14535,7 +14536,7 @@ fn zirStructInit( |
| 14535 | } | 14536 | } |
| 14536 | found_fields[field_index] = item.data.field_type; | 14537 | found_fields[field_index] = item.data.field_type; |
| 14537 | field_inits[field_index] = try sema.resolveInst(item.data.init); | 14538 | field_inits[field_index] = try sema.resolveInst(item.data.init); |
| 14538 | if (resolved_ty.structFieldValueComptime(field_index)) |default_value| { | 14539 | if (!is_packed) if (resolved_ty.structFieldValueComptime(field_index)) |default_value| { |
| 14539 | const init_val = (try sema.resolveMaybeUndefVal(block, field_src, field_inits[field_index])) orelse { | 14540 | const init_val = (try sema.resolveMaybeUndefVal(block, field_src, field_inits[field_index])) orelse { |
| 14540 | return sema.failWithNeededComptime(block, field_src, "value stored in comptime field must be comptime known"); | 14541 | return sema.failWithNeededComptime(block, field_src, "value stored in comptime field must be comptime known"); |
| 14541 | }; | 14542 | }; |
| ... | @@ -14544,7 +14545,7 @@ fn zirStructInit( | ... | @@ -14544,7 +14545,7 @@ fn zirStructInit( |
| 14544 | // TODO add note showing where default value is provided | 14545 | // TODO add note showing where default value is provided |
| 14545 | return sema.fail(block, field_src, "value stored in comptime field does not match the default value of the field", .{}); | 14546 | return sema.fail(block, field_src, "value stored in comptime field does not match the default value of the field", .{}); |
| 14546 | } | 14547 | } |
| 14547 | } | 14548 | }; |
| 14548 | } | 14549 | } |
| 14549 | | 14550 | |
| 14550 | return sema.finishStructInit(block, src, src, field_inits, resolved_ty, is_ref); | 14551 | return sema.finishStructInit(block, src, src, field_inits, resolved_ty, is_ref); |