gopls/internal/lsp/source: eliminate Metadata interface
This change merges the source.Metadata interface with
its sole implementation, cache.Metadata.
One possible concern: the struct cannot have private
fields used only by the cache-package logic that
constructs these structs. We are ok with that.
Change-Id: I93c112f92dc812bd0da07d36e7244d5d77978312
Reviewed-on: https://go-review.googlesource.com/c/tools/+/452035
Run-TryBot: Alan Donovan <adonovan@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
diff --git a/gopls/internal/lsp/cache/snapshot.go b/gopls/internal/lsp/cache/snapshot.go
index 281c5d9..ae5fe28 100644
--- a/gopls/internal/lsp/cache/snapshot.go
+++ b/gopls/internal/lsp/cache/snapshot.go
@@ -1128,12 +1128,12 @@
return result
}
-func (s *snapshot) MetadataForFile(ctx context.Context, uri span.URI) ([]source.Metadata, error) {
+func (s *snapshot) MetadataForFile(ctx context.Context, uri span.URI) ([]*source.Metadata, error) {
knownIDs, err := s.getOrLoadIDsForURI(ctx, uri)
if err != nil {
return nil, err
}
- var mds []source.Metadata
+ var mds []*source.Metadata
for _, id := range knownIDs {
md := s.getMetadata(id)
// TODO(rfindley): knownIDs and metadata should be in sync, but existing
@@ -1168,7 +1168,7 @@
return pkgs, nil
}
-func (s *snapshot) AllValidMetadata(ctx context.Context) ([]source.Metadata, error) {
+func (s *snapshot) AllValidMetadata(ctx context.Context) ([]*source.Metadata, error) {
if err := s.awaitLoaded(ctx); err != nil {
return nil, err
}
@@ -1176,7 +1176,7 @@
s.mu.Lock()
defer s.mu.Unlock()
- var meta []source.Metadata
+ var meta []*source.Metadata
for _, m := range s.meta.metadata {
meta = append(meta, m)
}
@@ -1233,7 +1233,7 @@
return match
}
-func (s *snapshot) getMetadata(id PackageID) *Metadata {
+func (s *snapshot) getMetadata(id PackageID) *source.Metadata {
s.mu.Lock()
defer s.mu.Unlock()
@@ -1922,7 +1922,7 @@
// Compute which metadata updates are required. We only need to invalidate
// packages directly containing the affected file, and only if it changed in
// a relevant way.
- metadataUpdates := make(map[PackageID]*Metadata)
+ metadataUpdates := make(map[PackageID]*source.Metadata)
for k, v := range s.meta.metadata {
invalidateMetadata := idsToInvalidate[k]