1 // Copyright 2020 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
22 type z func(string, http.Handler) error
25 return errors.New("foo")
28 func b() (string, int, error) {
29 return "", errors.New("foo") // want "wrong number of return values \\(want 3, got 2\\)"
32 func c() (string, int, error) {
33 return 7, errors.New("foo") // want "wrong number of return values \\(want 3, got 2\\)"
36 func d() (string, int, error) {
37 return "", 7 // want "wrong number of return values \\(want 3, got 2\\)"
40 func e() (T, error, *bool) {
41 return (z(http.ListenAndServe))("", nil) // want "wrong number of return values \\(want 3, got 1\\)"
44 func preserveLeft() (int, int, error) {
45 return 1, errors.New("foo") // want "wrong number of return values \\(want 3, got 2\\)"
48 func matchValues() (int, error, string) {
49 return errors.New("foo"), 3 // want "wrong number of return values \\(want 3, got 2\\)"
52 func preventDataOverwrite() (int, string) {
53 return errors.New("foo") // want "wrong number of return values \\(want 2, got 1\\)"
56 func closure() (string, error) {
57 _ = func() (int, error) {
58 return // want "wrong number of return values \\(want 2, got 0\\)"
60 return // want "wrong number of return values \\(want 2, got 0\\)"
63 func basic() (uint8, uint16, uint32, uint64, int8, int16, int32, int64, float32, float64, complex64, complex128, byte, rune, uint, int, uintptr, string, bool, error) {
64 return // want "wrong number of return values \\(want 20, got 0\\)"
67 func complex() (*int, []int, [2]int, map[int]int) {
68 return // want "wrong number of return values \\(want 4, got 0\\)"
71 func structsAndInterfaces() (T, url.URL, T1, I, I1, io.Reader, Client, ast2.Stmt) {
72 return // want "wrong number of return values \\(want 8, got 0\\)"
75 func m() (int, error) {
77 return // want "wrong number of return values \\(want 2, got 0\\)"
79 return errors.New("foo") // want "wrong number of return values \\(want 2, got 1\\)"
81 return 1 // want "wrong number of return values \\(want 2, got 1\\)"
83 return // want "wrong number of return values \\(want 2, got 0\\)"
86 func convertibleTypes() (ast2.Expr, int) {
87 return &ast2.ArrayType{} // want "wrong number of return values \\(want 2, got 1\\)"
90 func assignableTypes() (map[string]int, int) {
93 return x // want "wrong number of return values \\(want 2, got 1\\)"
96 func interfaceAndError() (I, int) {
97 return errors.New("foo") // want "wrong number of return values \\(want 2, got 1\\)"
100 func funcOneReturn() (string, error) {
101 return strconv.Itoa(1) // want "wrong number of return values \\(want 2, got 1\\)"
104 func funcMultipleReturn() (int, error, string) {
105 return strconv.Atoi("1")
108 func localFuncMultipleReturn() (string, int, error, string) {
112 func multipleUnused() (int, string, string, string) {
113 return 3, 4, 5 // want "wrong number of return values \\(want 4, got 3\\)"
116 func gotTooMany() int {
118 return 0, "" // want "wrong number of return values \\(want 1, got 2\\)"
120 return 1, 0, nil // want "wrong number of return values \\(want 1, got 3\\)"
122 return 0, 5, false // want "wrong number of return values \\(want 1, got 3\\)"
125 func fillVars() (int, string, ast.Node, bool, error) {
130 err := errors.New("fail")
131 return // want "wrong number of return values \\(want 5, got 0\\)"
133 n := ast.NewIdent("ident")
136 return "" // want "wrong number of return values \\(want 5, got 1\\)"