gopls/internal/lsp/source: KnownPackagePaths: avoid loading
This operation is logically just about metadata.
This change makes it avoid package loading.
(This is a warm-up exercise for more invasive variants
in many other places.)
Change-Id: I408c754f10665d3959ee0f4ff6cf95c54ec94f3e
Reviewed-on: https://go-review.googlesource.com/c/tools/+/452056
Reviewed-by: Robert Findley <rfindley@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
Run-TryBot: Alan Donovan <adonovan@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/gopls/internal/lsp/cache/check.go b/gopls/internal/lsp/cache/check.go
index 663cf25..8adec22 100644
--- a/gopls/internal/lsp/cache/check.go
+++ b/gopls/internal/lsp/cache/check.go
@@ -721,7 +721,7 @@
for _, depErr := range relevantErrors {
for i := len(depErr.ImportStack) - 1; i >= 0; i-- {
item := depErr.ImportStack[i]
- m := s.getMetadata(PackageID(item))
+ m := s.Metadata(PackageID(item))
if m == nil || m.Module == nil {
continue
}
diff --git a/gopls/internal/lsp/cache/mod_tidy.go b/gopls/internal/lsp/cache/mod_tidy.go
index 0a4b88e..9495f3f 100644
--- a/gopls/internal/lsp/cache/mod_tidy.go
+++ b/gopls/internal/lsp/cache/mod_tidy.go
@@ -193,7 +193,7 @@
// workspace.
// TODO(adonovan): opt: opportunities for parallelism abound.
for _, id := range snapshot.workspacePackageIDs() {
- m := snapshot.getMetadata(id)
+ m := snapshot.Metadata(id)
if m == nil {
return nil, fmt.Errorf("no metadata for %s", id)
}
diff --git a/gopls/internal/lsp/cache/snapshot.go b/gopls/internal/lsp/cache/snapshot.go
index 28d6fff..8b02dea 100644
--- a/gopls/internal/lsp/cache/snapshot.go
+++ b/gopls/internal/lsp/cache/snapshot.go
@@ -1249,10 +1249,9 @@
return match
}
-func (s *snapshot) getMetadata(id PackageID) *source.Metadata {
+func (s *snapshot) Metadata(id PackageID) *source.Metadata {
s.mu.Lock()
defer s.mu.Unlock()
-
return s.meta.metadata[id]
}