From aff77887f2b76979a7c47115dff53836bf99f2dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20R=C3=BChl?= Date: Tue, 1 Aug 2023 21:35:13 +0200 Subject: [PATCH] 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 d76c87cf19d..4db417c08c1 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 48ffad27dd1..c96d7ddfa44 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 de4f403d897..156215a9ed5 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: