Skip to content

Commit f7ea15e

Browse files
committed
internal/lsp: return completion item without documentation
Previously, if we failed to find an item's documentation, we would not return the item at all. It seems better to do a best-effort approach, i.e. return the item without documentation. Fixes golang/go#35406 Change-Id: I896ffda2fc79b9210f0d83311808114d0e686820 Reviewed-on: https://go-review.googlesource.com/c/tools/+/205862 Run-TryBot: Rebecca Stambler <[email protected]> Run-TryBot: Heschi Kreinick <[email protected]> Reviewed-by: Heschi Kreinick <[email protected]>
1 parent a4a09c7 commit f7ea15e

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

internal/lsp/source/completion_format.go

+11-5
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515

1616
"golang.org/x/tools/internal/lsp/protocol"
1717
"golang.org/x/tools/internal/lsp/snippet"
18+
"golang.org/x/tools/internal/lsp/telemetry"
1819
"golang.org/x/tools/internal/span"
1920
"golang.org/x/tools/internal/telemetry/log"
2021
"golang.org/x/tools/internal/telemetry/tag"
@@ -154,22 +155,27 @@ func (c *completer) item(cand candidate) (CompletionItem, error) {
154155
}
155156
ph, pkg, err := c.view.FindFileInPackage(c.ctx, uri, searchPkg)
156157
if err != nil {
157-
return CompletionItem{}, err
158+
log.Error(c.ctx, "error finding file in package", err, telemetry.URI.Of(uri), telemetry.Package.Of(searchPkg.ID()))
159+
return item, nil
158160
}
159161
file, _, _, err := ph.Cached()
160162
if err != nil {
161-
return CompletionItem{}, err
163+
log.Error(c.ctx, "no cached file", err, telemetry.URI.Of(uri))
164+
return item, nil
162165
}
163166
if !(file.Pos() <= obj.Pos() && obj.Pos() <= file.End()) {
164-
return CompletionItem{}, errors.Errorf("no file for completion object %s", obj.Name())
167+
log.Error(c.ctx, "no file for object", errors.Errorf("no file for completion object %s", obj.Name()), telemetry.URI.Of(uri))
168+
return item, nil
165169
}
166170
ident, err := findIdentifier(c.ctx, c.snapshot, pkg, file, obj.Pos())
167171
if err != nil {
168-
return CompletionItem{}, err
172+
log.Error(c.ctx, "failed to findIdentifier", err, telemetry.URI.Of(uri))
173+
return item, nil
169174
}
170175
hover, err := ident.Hover(c.ctx)
171176
if err != nil {
172-
return CompletionItem{}, err
177+
log.Error(c.ctx, "failed to find Hover", err, telemetry.URI.Of(uri))
178+
return item, nil
173179
}
174180
item.Documentation = hover.Synopsis
175181
if c.opts.FullDocumentation {

0 commit comments

Comments
 (0)