Fix setter of enums inside unions

This commit is contained in:
aboulart 2019-12-11 12:33:42 +00:00
parent 449af92753
commit e339ac3c8c
3 changed files with 19 additions and 3 deletions

View File

@ -0,0 +1,17 @@
@0xb7069c462537ddd6;
enum TestEnum {
a @0;
b @1;
}
const globalConstant: TestEnum = b;
struct Struct {
const structConstant: TestEnum = a;
union {
enumValue @0: TestEnum;
intValue @1: Int64;
}
}

View File

@ -343,10 +343,9 @@ namespace CapnpC.CSharp.Generator.CodeGen
return LiteralExpression(SyntaxKind.FalseLiteralExpression);
case TypeTag.Enum:
return MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
return CastExpression(
_names.MakeTypeSyntax(field.Type, field.DeclaringType, TypeUsage.NotRelevant),
_names.UnionDiscriminatorUndefined.IdentifierName);
LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(0)));
case TypeTag.F32:
return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(0.0f));