diff --git a/internal/lsp/source/completion_builtin.go b/internal/lsp/source/completion_builtin.go index d65eb8f4f4..fb247ab0e0 100644 --- a/internal/lsp/source/completion_builtin.go +++ b/internal/lsp/source/completion_builtin.go @@ -59,6 +59,9 @@ func (c *completer) builtinArgType(obj types.Object, call *ast.CallExpr, parentI switch obj.Name() { case "append": + if parentInf.objType == nil { + break + } inf.objType = parentInf.objType // Check if we are completing the variadic append() param. diff --git a/internal/lsp/testdata/lsp/primarymod/append/append.go b/internal/lsp/testdata/lsp/primarymod/append/append.go index 6c6bfb797e..68cae673cb 100644 --- a/internal/lsp/testdata/lsp/primarymod/append/append.go +++ b/internal/lsp/testdata/lsp/primarymod/append/append.go @@ -17,3 +17,4 @@ func _() { // Don't add "..." to append() argument. bar(append()) //@snippet("))", appendStrings, "aStrings", "aStrings") } +} diff --git a/internal/lsp/testdata/lsp/primarymod/append/append2.go.in b/internal/lsp/testdata/lsp/primarymod/append/append2.go.in new file mode 100644 index 0000000000..15bd357b2d --- /dev/null +++ b/internal/lsp/testdata/lsp/primarymod/append/append2.go.in @@ -0,0 +1,5 @@ +package append + +func _() { + _ = append(a, struct) //@complete(")") +} \ No newline at end of file diff --git a/internal/lsp/testdata/lsp/summary.txt.golden b/internal/lsp/testdata/lsp/summary.txt.golden index bea9c712e2..bd3db88221 100644 --- a/internal/lsp/testdata/lsp/summary.txt.golden +++ b/internal/lsp/testdata/lsp/summary.txt.golden @@ -1,6 +1,6 @@ -- summary -- CodeLensCount = 2 -CompletionsCount = 237 +CompletionsCount = 238 CompletionSnippetCount = 75 UnimportedCompletionsCount = 11 DeepCompletionsCount = 5