internal/lsp/source: handle nil pointer exception in completion
Fixes golang/vscode-go#923
Change-Id: I168228876e0bfc4de12b88697494898287f8762b
Reviewed-on: https://go-review.googlesource.com/c/tools/+/270098
Trust: Rebecca Stambler <rstambler@golang.org>
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
diff --git a/internal/lsp/source/completion/deep_completion.go b/internal/lsp/source/completion/deep_completion.go
index 61b29c3..71a6726 100644
--- a/internal/lsp/source/completion/deep_completion.go
+++ b/internal/lsp/source/completion/deep_completion.go
@@ -121,12 +121,16 @@
cand := c.deepState.dequeue()
obj := cand.obj
+ if obj == nil {
+ continue
+ }
+
// At the top level, dedupe by object.
if len(cand.path) == 0 {
- if c.seen[cand.obj] {
+ if c.seen[obj] {
continue
}
- c.seen[cand.obj] = true
+ c.seen[obj] = true
}
// If obj is not accessible because it lives in another package and is