| 
 | 1 | +//args: -Enonamedreturns  | 
 | 2 | +package testdata  | 
 | 3 | + | 
 | 4 | +import "fmt"  | 
 | 5 | + | 
 | 6 | +type asdf struct {  | 
 | 7 | +	test string  | 
 | 8 | +}  | 
 | 9 | + | 
 | 10 | +func noParams() {  | 
 | 11 | +	return  | 
 | 12 | +}  | 
 | 13 | + | 
 | 14 | +var c = func() {  | 
 | 15 | +	return  | 
 | 16 | +}  | 
 | 17 | + | 
 | 18 | +var d = func() error {  | 
 | 19 | +	return nil  | 
 | 20 | +}  | 
 | 21 | + | 
 | 22 | +var e = func() (err error) { // ERROR `named return "err" with type "error" found`  | 
 | 23 | +	err = nil  | 
 | 24 | +	return  | 
 | 25 | +}  | 
 | 26 | + | 
 | 27 | +var (  | 
 | 28 | +	f = func() {  | 
 | 29 | +		return  | 
 | 30 | +	}  | 
 | 31 | + | 
 | 32 | +	g = func() error {  | 
 | 33 | +		return nil  | 
 | 34 | +	}  | 
 | 35 | + | 
 | 36 | +	h = func() (err error) { // ERROR `named return "err" with type "error" found`  | 
 | 37 | +		err = nil  | 
 | 38 | +		return  | 
 | 39 | +	}  | 
 | 40 | +)  | 
 | 41 | + | 
 | 42 | +// this should not match as the implementation does not need named parameters (see below)  | 
 | 43 | +type funcDefintion func(arg1, arg2 interface{}) (num int, err error)  | 
 | 44 | + | 
 | 45 | +func funcDefintionImpl(arg1, arg2 interface{}) (int, error) {  | 
 | 46 | +	return 0, nil  | 
 | 47 | +}  | 
 | 48 | + | 
 | 49 | +func funcDefintionImpl2(arg1, arg2 interface{}) (num int, err error) { // ERROR `named return "num" with type "int" found`  | 
 | 50 | +	return 0, nil  | 
 | 51 | +}  | 
 | 52 | + | 
 | 53 | +var funcVar = func() (msg string) { // ERROR `named return "msg" with type "string" found`  | 
 | 54 | +	msg = "c"  | 
 | 55 | +	return msg  | 
 | 56 | +}  | 
 | 57 | + | 
 | 58 | +func test() {  | 
 | 59 | +	a := funcVar()  | 
 | 60 | +	_ = a  | 
 | 61 | + | 
 | 62 | +	var function funcDefintion  | 
 | 63 | +	function = funcDefintionImpl  | 
 | 64 | +	i, err := function("", "")  | 
 | 65 | +	_ = i  | 
 | 66 | +	_ = err  | 
 | 67 | +	function = funcDefintionImpl2  | 
 | 68 | +	i, err = function("", "")  | 
 | 69 | +	_ = i  | 
 | 70 | +	_ = err  | 
 | 71 | +}  | 
 | 72 | + | 
 | 73 | +func good(i string) string {  | 
 | 74 | +	return i  | 
 | 75 | +}  | 
 | 76 | + | 
 | 77 | +func bad(i string, a, b int) (ret1 string, ret2 interface{}, ret3, ret4 int, ret5 asdf) { // ERROR `named return "ret1" with type "string" found`  | 
 | 78 | +	x := "dummy"  | 
 | 79 | +	return fmt.Sprintf("%s", x), nil, 1, 2, asdf{}  | 
 | 80 | +}  | 
 | 81 | + | 
 | 82 | +func bad2() (msg string, err error) { // ERROR `named return "msg" with type "string" found`  | 
 | 83 | +	msg = ""  | 
 | 84 | +	err = nil  | 
 | 85 | +	return  | 
 | 86 | +}  | 
 | 87 | + | 
 | 88 | +func myLog(format string, args ...interface{}) {  | 
 | 89 | +	return  | 
 | 90 | +}  | 
 | 91 | + | 
 | 92 | +type obj struct{}  | 
 | 93 | + | 
 | 94 | +func (o *obj) func1() (err error) { return nil } // ERROR `named return "err" with type "error" found`  | 
0 commit comments