You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2022/03/09 08:50:05 UTC
[plc4x] 01/03: fix(codegen): Enabled the virtual field tests and fixed a related bug in plc4go
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit a5f8e6a9c0bbd5a85f7fb221fcb0893b8930c182
Author: cdutz <ch...@c-ware.de>
AuthorDate: Wed Mar 9 09:48:45 2022 +0100
fix(codegen): Enabled the virtual field tests and fixed a related bug in plc4go
---
.../resources/templates/go/model-template.go.ftlh | 6 ++---
.../src/main/resources/protocols/test/test.mspec | 26 ++++++++++++----------
2 files changed, 17 insertions(+), 15 deletions(-)
diff --git a/code-generation/language-go/src/main/resources/templates/go/model-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/model-template.go.ftlh
index d30e11a..256bf73 100644
--- a/code-generation/language-go/src/main/resources/templates/go/model-template.go.ftlh
+++ b/code-generation/language-go/src/main/resources/templates/go/model-template.go.ftlh
@@ -261,7 +261,7 @@ func (m *${type.name}) Get${field.name?cap_first}() <#if helper.needsPointerAcce
${field.name} := m.${field.name?cap_first}
_ = ${field.name}
</#list>
- return ${helper.toSerializationExpression(field, field.type, field.valueExpression, parserArguments)}
+ return ${helper.getLanguageTypeNameForTypeReference(typeRef)}(${helper.toSerializationExpression(field, field.type, field.valueExpression, parserArguments)})
}
</#list>
@@ -273,7 +273,7 @@ func (m *${type.name}) Get${field.name?cap_first}() <#if helper.needsPointerAcce
<#if type.constFields?has_content>
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
-/////////////////////// Accessors for conts fields.
+/////////////////////// Accessors for const fields.
///////////////////////
<#list type.constFields as field>
<#assign typeRef=field.asTypedField().orElseThrow().type>
@@ -609,7 +609,7 @@ func (m *${type.name}) GetParentLengthInBits() uint16 {
<#if simpleTypeReference.isSimpleTypeReference()>
<#if discriminatorField.type.isVstringTypeReference()>
<#assign vstringTypeReference = discriminatorField.type.asVstringTypeReference().orElseThrow()>
- lengthInBits += uint16(${helper.toSerializationExpression(discriminatorField, helper.intTypeReference, discriminatorField.lengthExpression, parserArguments)})
+ lengthInBits += uint16(${helper.toSerializationExpression(discriminatorField, helper.intTypeReference, vstringTypeReference.lengthExpression, parserArguments)})
<#else>
lengthInBits += ${simpleTypeReference.asSimpleTypeReference().orElseThrow().sizeInBits};
</#if>
diff --git a/code-generation/protocol-test/src/main/resources/protocols/test/test.mspec b/code-generation/protocol-test/src/main/resources/protocols/test/test.mspec
index d3400cd..010c02c 100644
--- a/code-generation/protocol-test/src/main/resources/protocols/test/test.mspec
+++ b/code-generation/protocol-test/src/main/resources/protocols/test/test.mspec
@@ -202,16 +202,16 @@
[reserved uint 8 '0x00']
]
-//TODO: Virtual fields fail for GO, haven't checked C assuming fails.
-//[type VirtualFieldTest
-// [simple uint 8 simpleField]
-// [virtual bit virtualBitField 'simpleField == 0']
-// [virtual int 8 virtualIntField 'simpleField']
-// [virtual uint 8 virtualUintField 'simpleField']
-// [virtual float 32 virtualFloatField 'simpleField']
-// [virtual float 64 virtualDoubleField 'simpleField']
-// [virtual string 24 virtualStringField 'simpleField']
-//]
+// TODO: So far only trouble in GO, C seems OK.
+[type VirtualFieldTest
+ [simple uint 8 simpleField]
+ [virtual bit virtualBitField 'simpleField == 0']
+ [virtual int 8 virtualIntField 'simpleField']
+ [virtual uint 8 virtualUintField 'simpleField']
+ [virtual float 32 virtualFloatField 'simpleField']
+ [virtual float 64 virtualDoubleField 'simpleField']
+ [virtual string 24 virtualStringField 'simpleField']
+]
//TODO: Virtual fields fail for GO, haven't checked C assuming fails.
//[discriminatedType DiscriminatedVirtualTypeTest
@@ -247,8 +247,8 @@
[simple uint 64 QuadIntField]
]
-//Specific test confirming a continous loop isn't formed when working out the length.
-[type LentghLoopTest
+//Specific test confirming a continuous loop isn't formed when working out the length.
+[type LengthLoopTest
[simple uint 16 commandType]
[implicit uint 16 len 'lengthInBytes - 8']
]
@@ -336,6 +336,7 @@
//Test to check if we can include concrete types as fields. Doesn't work in any language at the moment.
+// TODO: Check why this is commented out
//[discriminatedType SimpleDiscriminatedType
// [discriminator uint 8 discr]
// [typeSwitch discr
@@ -345,6 +346,7 @@
// ]
//]
+// TODO: Check why this is commented out
//[discriminatedType AnotherSimpleDiscriminatedType
// [discriminator uint 8 discr]
// [typeSwitch discr