ZoneCodeGenerator: Fix not finalizing DataTypes of typedefs when calculating sizes

This commit is contained in:
Jan 2019-12-21 12:04:35 +01:00
parent 295d9543f7
commit f3c9e6053f

View File

@ -38,10 +38,28 @@ namespace ZoneCodeGenerator.Domain
private void CalculateProperties() private void CalculateProperties()
{ {
foreach (var member in Members foreach (var member in Members
.Select(variable => variable.VariableType.Type) .Select(variable => variable.VariableType.Type))
.OfType<DataTypeWithMembers>())
{ {
member.FinalizeDataType(); switch (member)
{
case DataTypeWithMembers dataTypeWithMembers:
dataTypeWithMembers.FinalizeDataType();
break;
case DataTypeTypedef typeDef:
{
while (typeDef.TypeDefinition.Type is DataTypeTypedef typeDef2)
{
typeDef = typeDef2;
}
if(typeDef.TypeDefinition.Type is DataTypeWithMembers dataTypeWithMembers)
{
dataTypeWithMembers.FinalizeDataType();
}
break;
}
}
} }
alignment = Members.Select(variable => variable.Alignment).Max(); alignment = Members.Select(variable => variable.Alignment).Max();