Skip to content

Commit 3d53772

Browse files
author
Mateusz Gajewski
committed
Void returning functions fix
1 parent 5e1b469 commit 3d53772

File tree

4 files changed

+16
-2
lines changed

4 files changed

+16
-2
lines changed

cli/function.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ type function struct {
1212
FunctionHeader string
1313
ArgumentsCount int
1414
IsVariadic bool
15+
ReturnsVoid bool
1516
}
1617

1718
func (f *function) String() string {
@@ -46,6 +47,7 @@ func (p *pluginStructure) analyzeFunctions() error {
4647
Signature: p.getFunctionSignature(typ, false),
4748
FunctionHeader: p.getFunctionSignature(typ, true),
4849
ArgumentsCount: typ.NumIn(),
50+
ReturnsVoid: typ.NumOut() == 0,
4951
IsVariadic: typ.IsVariadic(),
5052
})
5153
}

cli/reflect.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,11 @@ func (p *pluginStructure) getFunctionSignature(fun reflect.Type, namedParams boo
8888
out = append(out, p.getVariableSignature(fun.Out(i), fun.IsVariadic() && i == fun.NumOut()-1))
8989
}
9090

91-
return fmt.Sprintf("func(%s) (%s)", strings.Join(in, ", "), strings.Join(out, ", "))
91+
var outParams string
92+
93+
if fun.NumOut() > 0 {
94+
outParams = fmt.Sprintf(" (%s)", strings.Join(out, ", "))
95+
}
96+
97+
return fmt.Sprintf("func(%s)%s", strings.Join(in, ", "), outParams)
9298
}

cli/template.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ type {{.Config.OutputName}} struct {
3030
//
3131
// See docs at https://godoc.org/{{$pluginPackage}}#{{.Name}}
3232
func (p *{{$receiver}}) {{.Name}}{{.TrimmedSignature}} {
33-
return p._{{ .Name }}({{ .ArgumentsCall }})
33+
{{ if .ReturnsVoid | not }}return {{ end }}p._{{ .Name }}({{ .ArgumentsCall }})
3434
}
3535
{{end}}
3636

internal/test_fixtures/basic_plugin/plugin.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package main
22

3+
import "fmt"
4+
35
func ReturningInt32() int32 {
46
return 32
57
}
@@ -11,3 +13,7 @@ func ReturningStringSlice() []string {
1113
func ReturningIntArray() [3]int32 {
1214
return [...]int32{1, 0, 1}
1315
}
16+
17+
func NonReturningFunction() {
18+
fmt.Println("I'm not returning anything")
19+
}

0 commit comments

Comments
 (0)