diff options
author | Rebecca Stambler <rstambler@golang.org> | 2019-06-24 16:34:21 -0400 |
---|---|---|
committer | Rebecca Stambler <rstambler@golang.org> | 2019-06-26 17:56:19 +0000 |
commit | 3cbd95df513543ea0e3c8e6dbf9c3ef3792bebd2 (patch) | |
tree | 73f36e1b32aae54f12b1edcc33ad5ee34191e7c3 /internal/lsp/references.go | |
parent | 252024b8295926254bbc18903b9b7d4f0389df2f (diff) | |
download | golang-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.go | 5 |
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 |