diff --git a/internal/lsp/analysis/fillreturns/fillreturns.go b/internal/lsp/analysis/fillreturns/fillreturns.go index 8e93b71c27..d194cd3670 100644 --- a/internal/lsp/analysis/fillreturns/fillreturns.go +++ b/internal/lsp/analysis/fillreturns/fillreturns.go @@ -135,8 +135,14 @@ outer: if !matchingTypes(info.TypeOf(val), typ) { continue } + if !analysisinternal.IsZeroValue(val) { + match, idx = val, j + break + } + // If the current match is a "zero" value, we keep searching in + // case we find a non-"zero" value match. If we do not find a + // non-"zero" value, we will use the "zero" value. match, idx = val, j - break } if match != nil { diff --git a/internal/lsp/analysis/fillreturns/testdata/src/a/a.go.golden b/internal/lsp/analysis/fillreturns/testdata/src/a/a.go.golden index d4a847172d..69140d06f5 100644 --- a/internal/lsp/analysis/fillreturns/testdata/src/a/a.go.golden +++ b/internal/lsp/analysis/fillreturns/testdata/src/a/a.go.golden @@ -118,5 +118,5 @@ func gotTooMany() int { } else { return 1 // want "wrong number of return values \\(want 1, got 3\\)" } - return 0, 5 // want "wrong number of return values \\(want 1, got 3\\)" + return 5 // want "wrong number of return values \\(want 1, got 3\\)" }