mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
that contain zero-sized payloads, which should resolve a number of issues with RemoteMirror incorrectly reflecting enum cases and/or measuring the layout of structures containing enums. Background: Enum cases that have zero-sized payloads are handled differently from other payload-bearing cases. 1. For layout purposes, they're treated as non-payload cases. This can cause an MPE to actually get represented in memory as a single-payload or non-payload enum. 2. However, zero-sized payloads are still considered for extra inhabitant calculations. Since they have no extra inhabitants, this tends to cause such enums to also not expose extra inhabitants to containing enums. This commit makes several change to how RemoteMirror determines enum layout: * The various "*EnumTypeInfo" classes now represent layout mechanisms -- as described in (1) above, this can differ from the source code concept. * An Enum "kind" is separately computed to reflect the source code concept; this ensures that the dumped type information reflects the source code. * For single-payload and no-payload _layouts_, the extra inhabitant calculation has been adjusted to ensure that zero-sized payloads are correctly considered. Resolves: rdar://92945673