From faf0e61b8a94377b42e550fa7126256279f7739c Mon Sep 17 00:00:00 2001 From: Rebecca Stambler Date: Sun, 17 Nov 2019 23:54:32 -0500 Subject: [PATCH] internal/lsp: don't search other packages for unexported references Updates golang/go#35597 Change-Id: Ib17e94a99d49fe78f09f711b86f9115ac4aadeb9 Reviewed-on: https://go-review.googlesource.com/c/tools/+/207601 Run-TryBot: Rebecca Stambler TryBot-Result: Gobot Gobot Reviewed-by: Michael Matloob --- internal/lsp/source/references.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/internal/lsp/source/references.go b/internal/lsp/source/references.go index 974676029f..1351dfc6c3 100644 --- a/internal/lsp/source/references.go +++ b/internal/lsp/source/references.go @@ -70,9 +70,16 @@ func (i *IdentifierInfo) References(ctx context.Context) ([]*ReferenceInfo, erro mappedRange: rng, }}, references...) } - // TODO(matloob): This only needs to look into reverse-dependencies. - // Avoid checking types of other packages. - for _, pkg := range i.Snapshot.KnownPackages(ctx) { + var searchpkgs []Package + if i.Declaration.obj.Exported() { + // Only search all packages if the identifier is exported. + // TODO(matloob): This only needs to look into reverse-dependencies. + // Avoid checking types of other packages. + searchpkgs = i.Snapshot.KnownPackages(ctx) + } else { + searchpkgs = []Package{i.pkg} + } + for _, pkg := range searchpkgs { for ident, obj := range pkg.GetTypesInfo().Uses { if obj == nil || !(sameObj(obj, i.Declaration.obj)) { continue