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 2023/08/01 19:35:24 UTC

[plc4x] 03/03: fix(plc4go): fix issue with generator

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 aff77887f2b76979a7c47115dff53836bf99f2dd
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Aug 1 21:35:13 2023 +0200

    fix(plc4go): fix issue with generator
---
 plc4go/internal/cbus/Subscriber_plc4xgen.go  |  2 +-
 plc4go/internal/opcua/Subscriber_plc4xgen.go |  2 +-
 plc4go/tools/plc4xgenerator/gen.go           | 11 +++++++----
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/plc4go/internal/cbus/Subscriber_plc4xgen.go b/plc4go/internal/cbus/Subscriber_plc4xgen.go
index d76c87cf19..4db417c08c 100644
--- a/plc4go/internal/cbus/Subscriber_plc4xgen.go
+++ b/plc4go/internal/cbus/Subscriber_plc4xgen.go
@@ -46,7 +46,7 @@ func (d *Subscriber) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 		return err
 	}
 	for _name, elem := range d.consumers {
-		name := fmt.Sprintf("%v", _name)
+		name := fmt.Sprintf("%v", &_name)
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/internal/opcua/Subscriber_plc4xgen.go b/plc4go/internal/opcua/Subscriber_plc4xgen.go
index 48ffad27dd..c96d7ddfa4 100644
--- a/plc4go/internal/opcua/Subscriber_plc4xgen.go
+++ b/plc4go/internal/opcua/Subscriber_plc4xgen.go
@@ -46,7 +46,7 @@ func (d *Subscriber) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 		return err
 	}
 	for _name, elem := range d.consumers {
-		name := fmt.Sprintf("%v", _name)
+		name := fmt.Sprintf("%v", &_name)
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/tools/plc4xgenerator/gen.go b/plc4go/tools/plc4xgenerator/gen.go
index de4f403d89..156215a9ed 100644
--- a/plc4go/tools/plc4xgenerator/gen.go
+++ b/plc4go/tools/plc4xgenerator/gen.go
@@ -350,15 +350,18 @@ func (g *Generator) generate(typeName string) {
 			g.Printf("if err := writeBuffer.PushContext(%s, utils.WithRenderAsList(true)); err != nil {\n\t\treturn err\n\t}\n", fieldNameUntitled)
 			// TODO: we use serializable or strings as we don't want to over-complex this
 			g.Printf("for _name, elem := range d.%s {\n", fieldName)
-			if ident, ok := fieldType.Key.(*ast.Ident); !ok || ident.Name != "string" {
-				switch ident.Name {
+			switch keyType := fieldType.Key.(type) {
+			case *ast.Ident:
+				switch keyType.Name {
 				case "uint", "uint8", "uint16", "uint32", "uint64", "int", "int8", "int16", "int32", "int64": // TODO: add other types
 					g.Printf("\t\tname := fmt.Sprintf(\"%s\", _name)\n", "%v")
+				case "string":
+					g.Printf("\t\tname := _name\n")
 				default:
 					g.Printf("\t\tname := fmt.Sprintf(\"%s\", &_name)\n", "%v")
 				}
-			} else {
-				g.Printf("\t\tname := _name\n")
+			default:
+				g.Printf("\t\tname := fmt.Sprintf(\"%s\", &_name)\n", "%v")
 			}
 			switch eltType := fieldType.Value.(type) {
 			case *ast.StarExpr, *ast.SelectorExpr: