| ... | @@ -3489,7 +3489,10 @@ pub const Type = extern union { | ... | @@ -3489,7 +3489,10 @@ pub const Type = extern union { |
| 3489 | return AbiSizeAdvanced{ .scalar = 0 }; | 3489 | return AbiSizeAdvanced{ .scalar = 0 }; |
| 3490 | } | 3490 | } |
| 3491 | | 3491 | |
| 3492 | if (!child_type.hasRuntimeBits()) return AbiSizeAdvanced{ .scalar = 1 }; | 3492 | if (!(child_type.hasRuntimeBitsAdvanced(false, strat) catch |err| switch (err) { |
| | 3493 | error.NeedLazy => return AbiSizeAdvanced{ .val = try Value.Tag.lazy_size.create(strat.lazy, ty) }, |
| | 3494 | else => |e| return e, |
| | 3495 | })) return AbiSizeAdvanced{ .scalar = 1 }; |
| 3493 | | 3496 | |
| 3494 | if (ty.optionalReprIsPayload()) { | 3497 | if (ty.optionalReprIsPayload()) { |
| 3495 | return abiSizeAdvanced(child_type, target, strat); | 3498 | return abiSizeAdvanced(child_type, target, strat); |
| ... | @@ -3518,7 +3521,10 @@ pub const Type = extern union { | ... | @@ -3518,7 +3521,10 @@ pub const Type = extern union { |
| 3518 | // in abiAlignmentAdvanced. | 3521 | // in abiAlignmentAdvanced. |
| 3519 | const data = ty.castTag(.error_union).?.data; | 3522 | const data = ty.castTag(.error_union).?.data; |
| 3520 | const code_size = abiSize(Type.anyerror, target); | 3523 | const code_size = abiSize(Type.anyerror, target); |
| 3521 | if (!data.payload.hasRuntimeBits()) { | 3524 | if (!(data.payload.hasRuntimeBitsAdvanced(false, strat) catch |err| switch (err) { |
| | 3525 | error.NeedLazy => return AbiSizeAdvanced{ .val = try Value.Tag.lazy_size.create(strat.lazy, ty) }, |
| | 3526 | else => |e| return e, |
| | 3527 | })) { |
| 3522 | // Same as anyerror. | 3528 | // Same as anyerror. |
| 3523 | return AbiSizeAdvanced{ .scalar = code_size }; | 3529 | return AbiSizeAdvanced{ .scalar = code_size }; |
| 3524 | } | 3530 | } |