diff --git a/CapnpC.CSharp.Generator.Tests/Embedded Resources/UnitTest12.capnp.bin b/CapnpC.CSharp.Generator.Tests/Embedded Resources/UnitTest12.capnp.bin new file mode 100644 index 0000000..988e7d0 Binary files /dev/null and b/CapnpC.CSharp.Generator.Tests/Embedded Resources/UnitTest12.capnp.bin differ diff --git a/CapnpC.CSharp.Generator.Tests/No Resources/UnitTest12.capnp b/CapnpC.CSharp.Generator.Tests/No Resources/UnitTest12.capnp new file mode 100644 index 0000000..c687260 --- /dev/null +++ b/CapnpC.CSharp.Generator.Tests/No Resources/UnitTest12.capnp @@ -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; + } +} diff --git a/CapnpC.CSharp.Generator/CodeGen/DomainClassSnippetGen.cs b/CapnpC.CSharp.Generator/CodeGen/DomainClassSnippetGen.cs index fb41086..a255b84 100644 --- a/CapnpC.CSharp.Generator/CodeGen/DomainClassSnippetGen.cs +++ b/CapnpC.CSharp.Generator/CodeGen/DomainClassSnippetGen.cs @@ -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));