aboutsummaryrefslogtreecommitdiff
path: root/internal/lsp/references.go
diff options
context:
space:
mode:
authorRebecca Stambler <rstambler@golang.org>2019-06-24 16:34:21 -0400
committerRebecca Stambler <rstambler@golang.org>2019-06-26 17:56:19 +0000
commit3cbd95df513543ea0e3c8e6dbf9c3ef3792bebd2 (patch)
tree73f36e1b32aae54f12b1edcc33ad5ee34191e7c3 /internal/lsp/references.go
parent252024b8295926254bbc18903b9b7d4f0389df2f (diff)
downloadgolang-x-tools-3cbd95df513543ea0e3c8e6dbf9c3ef3792bebd2.tar.gz
internal/lsp: support a file belonging to multiple packages
This change adds supports for a package belonging to multiple files. It requires additional packages.Loads for all of the packages to which a file belongs (for example, if a non-test file also belongs to a package's test variant). For now, we re-run go/packages.Load for each file we open, regardless of whether or not we already know about it. This solves the issue of packages randomly belonging to a test or not. Follow-up work needs to be done to support multiple packages in references, rename, and diagnostics. Fixes golang/go#32791 Fixes golang/go#30100 Change-Id: I0a5870a05825fc16cc46d405ef50c775094b0fbb Reviewed-on: https://go-review.googlesource.com/c/tools/+/183628 Run-TryBot: Rebecca Stambler <rstambler@golang.org> Reviewed-by: Ian Cottrell <iancottrell@google.com>
Diffstat (limited to 'internal/lsp/references.go')
-rw-r--r--internal/lsp/references.go5
1 files changed, 1 insertions, 4 deletions
diff --git a/internal/lsp/references.go b/internal/lsp/references.go
index 5f0d6bce2..6be976a77 100644
--- a/internal/lsp/references.go
+++ b/internal/lsp/references.go
@@ -27,7 +27,6 @@ func (s *Server) references(ctx context.Context, params *protocol.ReferenceParam
if err != nil {
return nil, err
}
-
// Find all references to the identifier at the position.
ident, err := source.Identifier(ctx, view, f, rng.Start)
if err != nil {
@@ -35,9 +34,8 @@ func (s *Server) references(ctx context.Context, params *protocol.ReferenceParam
}
references, err := ident.References(ctx)
if err != nil {
- return nil, err
+ view.Session().Logger().Errorf(ctx, "no references for %s: %v", ident.Name, err)
}
-
// Get the location of each reference to return as the result.
locations := make([]protocol.Location, 0, len(references))
for _, ref := range references {
@@ -53,7 +51,6 @@ func (s *Server) references(ctx context.Context, params *protocol.ReferenceParam
if err != nil {
return nil, err
}
-
locations = append(locations, loc)
}
return locations, nil