From 61ea331ec02b1bdf89c6d7e5a90921328e4c2b07 Mon Sep 17 00:00:00 2001 From: Rebecca Stambler Date: Sat, 14 Nov 2020 12:39:37 -0500 Subject: [PATCH] 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 Run-TryBot: Rebecca Stambler gopls-CI: kokoro TryBot-Result: Go Bot Reviewed-by: Robert Findley --- internal/lsp/source/completion/deep_completion.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/lsp/source/completion/deep_completion.go b/internal/lsp/source/completion/deep_completion.go index 61b29c3447..71a6726ae8 100644 --- a/internal/lsp/source/completion/deep_completion.go +++ b/internal/lsp/source/completion/deep_completion.go @@ -121,12 +121,16 @@ outer: 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