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 <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Matloob <matloob@golang.org>
diff --git a/internal/lsp/source/references.go b/internal/lsp/source/references.go
index 9746760..1351dfc 100644
--- a/internal/lsp/source/references.go
+++ b/internal/lsp/source/references.go
@@ -70,9 +70,16 @@
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