internal/lsp/source: fix multi return value func completion
Fix a minor completion ranking issue:
foo := func(int, int) {}
foo(123, <>)
Previously we were preferring "foo()" at "<>" even though it can't be
used. We mistakenly thought we were completing the first param because
the *ast.CallExpr appears to only have a single param.
Change-Id: Iedbbb1870a4b9eb5d5be4ed266b8bb3e313b496b
Reviewed-on: https://go-review.googlesource.com/c/tools/+/246697
Run-TryBot: Muir Manders <muir@mnd.rs>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
diff --git a/internal/lsp/source/completion.go b/internal/lsp/source/completion.go
index 25fa744..852d0ec 100644
--- a/internal/lsp/source/completion.go
+++ b/internal/lsp/source/completion.go
@@ -1661,7 +1661,7 @@
// values, in turn getting passed in to the surrounding
// call. Record the assignees so we can favor function
// calls that return matching values.
- if len(node.Args) <= 1 {
+ if len(node.Args) <= 1 && exprIdx == 0 {
for i := 0; i < sig.Params().Len(); i++ {
inf.assignees = append(inf.assignees, sig.Params().At(i).Type())
}
diff --git a/internal/lsp/testdata/lsp/primarymod/multireturn/multi_return.go b/internal/lsp/testdata/lsp/primarymod/multireturn/multi_return.go.in
similarity index 94%
rename from internal/lsp/testdata/lsp/primarymod/multireturn/multi_return.go
rename to internal/lsp/testdata/lsp/primarymod/multireturn/multi_return.go.in
index a706f80..712070b 100644
--- a/internal/lsp/testdata/lsp/primarymod/multireturn/multi_return.go
+++ b/internal/lsp/testdata/lsp/primarymod/multireturn/multi_return.go.in
@@ -23,6 +23,7 @@
f1(f) //@rank(")", multiF1, multiF2)
f2(f) //@rank(")", multiF2, multiF3),rank(")", multiF1, multiF3)
f2(1, f) //@rank(")", multiF1, multiF2),rank(")", multiF1, multiF0)
+ f2(1, ) //@rank(")", multiF1, multiF2),rank(")", multiF1, multiF0)
f2Str() //@rank(")", multiF2Str, multiF2)
var i int
diff --git a/internal/lsp/testdata/lsp/summary.txt.golden b/internal/lsp/testdata/lsp/summary.txt.golden
index 77f1e70..019516e 100644
--- a/internal/lsp/testdata/lsp/summary.txt.golden
+++ b/internal/lsp/testdata/lsp/summary.txt.golden
@@ -5,7 +5,7 @@
UnimportedCompletionsCount = 6
DeepCompletionsCount = 5
FuzzyCompletionsCount = 8
-RankedCompletionsCount = 120
+RankedCompletionsCount = 122
CaseSensitiveCompletionsCount = 4
DiagnosticsCount = 44
FoldingRangesCount = 2