You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/07/21 14:55:01 UTC
[plc4x] 01/02: fix(codegen/plc4go): fixed issue when using parser argument childs
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit c11481f0dc5746b69a0f60ad038e164e33369f12
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jul 21 16:53:02 2022 +0200
fix(codegen/plc4go): fixed issue when using parser argument childs
---
.../plc4x/language/go/GoLanguageTemplateHelper.java | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java b/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
index 5a5565f1e..f8fe2106f 100644
--- a/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
+++ b/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
@@ -841,7 +841,15 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
variableLiteral.getChild()
.map(child -> "." + capitalize(toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess, true)))
.orElse("");
- }
+ }/*
+ if ((parserArguments != null) && parserArguments.stream()
+ .anyMatch(argument -> argument.getName().equals(variableLiteralName))) {
+ tracer = tracer.dive("parser argument");
+ return tracer + "m." + capitalize(variableLiteralName) +
+ variableLiteral.getChild()
+ .map(child -> "." + capitalize(toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess, true)))
+ .orElse("");
+ }*/
String indexCall = "";
if (variableLiteral.getIndex().isPresent()) {
tracer = tracer.dive("indexCall");
@@ -958,7 +966,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
arg = ((UnaryTerm) arg).getA();
}
if (arg instanceof VariableLiteral) {
- tracer = tracer.dive("VariableLiteral");
+ tracer = tracer.dive("VariableLiteral nr." + i);
VariableLiteral va = (VariableLiteral) arg;
// "io" is the default name of the reader argument which is always available.
boolean isParserArg = "readBuffer".equals(va.getName()) || "writeBuffer".equals(va.getName()) || ((thisType instanceof DataIoTypeDefinition) && "_value".equals(va.getName()));
@@ -972,11 +980,13 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
}
}
if (isParserArg) {
+ tracer = tracer.dive("isParserArg");
if (va.getName().equals("_value")) {
+ tracer = tracer.dive("is _value");
sb.append(va.getName().substring(1)).append(va.getChild().map(child -> "." + toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess, true)).orElse(""));
} else {
sb.append(va.getName()).append((va.getChild().isPresent()) ?
- "." + toVariableExpression(field, typeReference, va.getChild().orElseThrow(IllegalStateException::new), parserArguments, serializerArguments, false, suppressPointerAccess) : "");
+ ".Get" + capitalize(toVariableExpression(field, typeReference, va.getChild().orElseThrow(IllegalStateException::new), parserArguments, serializerArguments, false, suppressPointerAccess)) + "()" : "");
}
}
// We have to manually evaluate the type information at code-generation time.
@@ -1047,7 +1057,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
private String toOptionalVariableExpression(Field field, TypeReference typeReference, VariableLiteral variableLiteral, List<Argument> parserArguments, List<Argument> serializerArguments, boolean suppressPointerAccess, Tracer tracer) {
tracer = tracer.dive("optional fields");
- return tracer + "(" + (suppressPointerAccess || (typeReference != null && typeReference.isComplexTypeReference())? "" : "*") + variableLiteral.getName() + ")" +
+ return tracer + "(" + (suppressPointerAccess || (typeReference != null && typeReference.isComplexTypeReference()) ? "" : "*") + variableLiteral.getName() + ")" +
variableLiteral.getChild().map(child -> "." + capitalize(toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess, true))).orElse("");
}