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)z5Cl4$iJl?#_;a
z;Ns?>xD*@|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));