From e339ac3c8c83f47286495c85203de8286dce939b Mon Sep 17 00:00:00 2001 From: aboulart <37553604+aboulart@users.noreply.github.com> Date: Wed, 11 Dec 2019 12:33:42 +0000 Subject: [PATCH] Fix setter of enums inside unions --- .../Embedded Resources/UnitTest12.capnp.bin | Bin 0 -> 1392 bytes .../No Resources/UnitTest12.capnp | 17 +++++++++++++++++ .../CodeGen/DomainClassSnippetGen.cs | 5 ++--- 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 CapnpC.CSharp.Generator.Tests/Embedded Resources/UnitTest12.capnp.bin create mode 100644 CapnpC.CSharp.Generator.Tests/No Resources/UnitTest12.capnp 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 0000000000000000000000000000000000000000..988e7d07aeb96d5f12ed22220f20c4bbacc394ca GIT binary patch literal 1392 zcmb7EJxIe)5WZNg3W_L#F8(ZnKTul{3dKPX6&w`Qy2l!%(k7)z5ClxD*@|7eRFKXRv%$QIM(FSB847-4L~8HPd^qE zMDB|5p}CXrxl=7OZxJ6w*%Pow6a(L&+a6z-2F0V{ug^p7%Y0>Dk>OwxJ-47~sF&{s zeCC@2N*1zDZ)KY*Pet83RGJJry{up?uWEC zDEAlV(Fvc=Q@lU+d7k2(v!8(SHJruS!YqrQxpOm#0{2f;c3~cTPxwC~g!k(b4p4k$ et8ZO(bJksS?xp-6@jUoFb3cA}fxHlBVLrc&3Cs-u literal 0 HcmV?d00001 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));