golangci-lint/test/testdata/nonamedreturns.go
2022-04-17 15:41:08 +02:00

95 lines
1.7 KiB
Go

//args: -Enonamedreturns
package testdata
import "fmt"
type asdf struct {
test string
}
func noParams() {
return
}
var c = func() {
return
}
var d = func() error {
return nil
}
var e = func() (err error) { // ERROR `named return "err" with type "error" found`
err = nil
return
}
var (
f = func() {
return
}
g = func() error {
return nil
}
h = func() (err error) { // ERROR `named return "err" with type "error" found`
err = nil
return
}
)
// this should not match as the implementation does not need named parameters (see below)
type funcDefintion func(arg1, arg2 interface{}) (num int, err error)
func funcDefintionImpl(arg1, arg2 interface{}) (int, error) {
return 0, nil
}
func funcDefintionImpl2(arg1, arg2 interface{}) (num int, err error) { // ERROR `named return "num" with type "int" found`
return 0, nil
}
var funcVar = func() (msg string) { // ERROR `named return "msg" with type "string" found`
msg = "c"
return msg
}
func test() {
a := funcVar()
_ = a
var function funcDefintion
function = funcDefintionImpl
i, err := function("", "")
_ = i
_ = err
function = funcDefintionImpl2
i, err = function("", "")
_ = i
_ = err
}
func good(i string) string {
return i
}
func bad(i string, a, b int) (ret1 string, ret2 interface{}, ret3, ret4 int, ret5 asdf) { // ERROR `named return "ret1" with type "string" found`
x := "dummy"
return fmt.Sprintf("%s", x), nil, 1, 2, asdf{}
}
func bad2() (msg string, err error) { // ERROR `named return "msg" with type "string" found`
msg = ""
err = nil
return
}
func myLog(format string, args ...interface{}) {
return
}
type obj struct{}
func (o *obj) func1() (err error) { return nil } // ERROR `named return "err" with type "error" found`