1
0
mirror of https://github.com/golang/go synced 2024-11-18 18:44:42 -07:00
go/internal/lsp
Muir Manders f80fb1dfa1 internal/lsp: refactor find-references and rename
The main goal is to push the package variant logic from internal/lsp
into internal/lsp/source so all users of internal/lsp/source benefit.

"references" and "rename" now have top-level source.References() and
source.Rename() entry points (as opposed to hanging off
source.Identifier()). I expanded objectsAtProtocolPos() to know about
implicit objects (type switch and import spec), and to
handle *ast.ImportSpec generically. This gets rid of special case
handling of *types.PkgName in various places.

The biggest practical benefit, though, is that "references" no longer
needs to compute the objectpath for every types.Object comparison it
does, instead using direct types.Object equality. This speeds up
"references" and "rename" a lot.

Two other notable improvements that fell out of not using
source.Identifier()'s logic:

- Finding references on an embedded field now shows references to the
  field, not the type being embedded.
- Finding references on an imported object now works
  correctly (previously it searched the importing package's dependents
  rather than the imported package's dependents).

Finally, I refactored findIdentifier() to use pathEnclosingObjNode()
instead of astutil.PathEnclosingInterval. Now we only need a single
call to get the path because pathEnclosingObjNode() has the
"try pos || try pos-1" logic built in.

Change-Id: I667be9bed6ad83912404b90257c5c1485b3a7025
Reviewed-on: https://go-review.googlesource.com/c/tools/+/211999
Run-TryBot: Muir Manders <muir@mnd.rs>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2020-01-16 06:24:15 +00:00
..
browser internal/lsp: add version and bug commands 2019-05-11 04:16:02 +00:00
cache internal/lsp/cache: initialize view before LookupBuiltin 2020-01-16 00:42:58 +00:00
cmd internal/lsp: diagnose the snapshot on every text synchronization event 2020-01-15 23:07:48 +00:00
debug internal/lsp: add server instance to debug info 2020-01-15 14:58:21 +00:00
diff internal/lsp: fix unified diffs of edits at the end of a file 2019-10-11 16:38:14 +00:00
fuzzy internal/lsp: make golint happy 2019-12-23 18:17:04 +00:00
mod internal/lsp/cache: refactor initialization for builtins 2020-01-15 21:04:26 +00:00
protocol internal/lsp/protocol: support nonstandard requests 2020-01-14 21:52:24 +00:00
snippet all: fix broken links to LSP specification 2019-10-02 18:32:53 +00:00
source internal/lsp: refactor find-references and rename 2020-01-16 06:24:15 +00:00
telemetry internal/lsp: load metadata for a single package ID, when needed 2019-12-30 21:09:35 +00:00
testdata internal/lsp: refactor find-references and rename 2020-01-16 06:24:15 +00:00
tests internal/lsp: show dependency quick fixes for go.mod diagnostics 2020-01-15 16:51:05 +00:00
code_action.go internal/lsp: show dependency quick fixes for go.mod diagnostics 2020-01-15 16:51:05 +00:00
command.go internal/lsp: remove view.FindPosInPackage and view.FindMapperInPackage 2020-01-13 18:51:11 +00:00
completion_test.go internal/lsp: merge completion options into source.Options 2020-01-13 20:09:44 +00:00
completion.go internal/lsp/source: improve completion in type assertions 2020-01-16 01:06:23 +00:00
definition.go internal/lsp: finish renaming CheckPackageHandle to PackageHandle 2020-01-14 23:56:10 +00:00
diagnostics.go internal/lsp: diagnose the snapshot on every text synchronization event 2020-01-15 23:07:48 +00:00
folding_range.go internal/lsp: remove view.FindPosInPackage and view.FindMapperInPackage 2020-01-13 18:51:11 +00:00
format.go internal/lsp: remove view.FindPosInPackage and view.FindMapperInPackage 2020-01-13 18:51:11 +00:00
general.go internal/lsp: diagnose the snapshot on every text synchronization event 2020-01-15 23:07:48 +00:00
highlight.go internal/lsp: remove view.FindPosInPackage and view.FindMapperInPackage 2020-01-13 18:51:11 +00:00
hover.go internal/lsp: finish renaming CheckPackageHandle to PackageHandle 2020-01-14 23:56:10 +00:00
implementation.go internal/lsp: remove view.FindPosInPackage and view.FindMapperInPackage 2020-01-13 18:51:11 +00:00
link.go internal/lsp: remove view.FindPosInPackage and view.FindMapperInPackage 2020-01-13 18:51:11 +00:00
lsp_test.go internal/lsp: diagnose the snapshot on every text synchronization event 2020-01-15 23:07:48 +00:00
references.go internal/lsp: refactor find-references and rename 2020-01-16 06:24:15 +00:00
rename.go internal/lsp: refactor find-references and rename 2020-01-16 06:24:15 +00:00
reset_golden.sh internal/lsp: fix regeneration of golden files 2019-09-25 13:16:59 +00:00
server.go internal/lsp: diagnose the snapshot on every text synchronization event 2020-01-15 23:07:48 +00:00
signature_help.go internal/lsp: remove view.FindPosInPackage and view.FindMapperInPackage 2020-01-13 18:51:11 +00:00
symbols.go internal/lsp: remove view.FindPosInPackage and view.FindMapperInPackage 2020-01-13 18:51:11 +00:00
text_synchronization.go internal/lsp: diagnose the snapshot on every text synchronization event 2020-01-15 23:07:48 +00:00
workspace.go internal/lsp: diagnose the snapshot on every text synchronization event 2020-01-15 23:07:48 +00:00