1
0
mirror of https://github.com/golang/go synced 2024-09-30 16:08:36 -06:00
go/internal/lsp
Heschi Kreinick 412b8bda49 internal/lsp/cache: ref-count snapshots
To manually collect cache entries, we need to know when a snapshot is
idle. Add a reference count in the form of a WaitGroup and keep track of
its uses. The pattern is that any time a snapshot is returned, it comes
with a release function that decrements the ref count.

Almost all uses of a snapshot originate in a user-facing request,
handled in beginFileRequest. There it's mostly an exercise in passing
Snapshots around instead of Views.

In the other places I took the path of least resistance. For file
modifications I tried to minimize the amount of code that needed to deal
with snapshots. For diagnostics I just acquired the snapshot at the
diagnostics call.

Change-Id: Id48a2df3acdd97f27d905e2c2be23072f28f196b
Reviewed-on: https://go-review.googlesource.com/c/tools/+/241837
Run-TryBot: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2020-08-03 22:08:54 +00:00
..
analysis internal/lsp: allow narrower scope for convenience CodeActions 2020-07-27 23:36:28 +00:00
browser internal/lsp: add version and bug commands 2019-05-11 04:16:02 +00:00
cache internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
cmd internal/lsp: move undeclaredname suggested fix out of analysis 2020-07-23 23:54:27 +00:00
debug internal/lsp/lsprpc: improvements to daemon logging 2020-07-16 19:33:22 +00:00
diff internal/testenv: check that external 'diff' tool is the GNU version 2020-05-08 20:46:49 +00:00
fake internal/lsp: correctly invalidate metadata for batched changes 2020-07-27 19:55:46 +00:00
fuzzy internal/lsp: fix errors found by staticcheck 2020-03-19 19:20:54 +00:00
helper internal/lsp: change to helper.go to output a formatted file 2020-01-31 20:35:38 +00:00
lsprpc internal/lsp: remove uses of crypto/sha1 in gopls 2020-07-28 22:26:17 +00:00
mod internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
protocol internal/lsp: update code for LSP protocol 2020-07-28 15:42:44 +00:00
regtest internal/lsp: invalidate all packages on go.mod file changes 2020-07-31 06:09:45 +00:00
snippet all: fix broken links to LSP specification 2019-10-02 18:32:53 +00:00
source internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
testdata internal/lsp: fix go.mod.golden test file to have sorted mod names 2020-07-30 22:19:56 +00:00
tests internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
code_action.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
code_lens.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
command.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
completion_test.go internal/lsp/source: offer smart "append()" completions 2020-05-20 22:05:37 +00:00
completion.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
definition.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
diagnostics.go internal/lsp: fix a few staticcheck suggestions, some cleanup 2020-07-29 17:11:59 +00:00
folding_range.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
format.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
general.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
highlight.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
hover.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
implementation.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
link.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
lsp_test.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
progress.go internal/lsp: change the way that we pass arguments to command 2020-07-21 16:30:27 +00:00
references.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
rename.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
reset_golden.sh internal/lsp: fix regeneration of golden files 2019-09-25 13:16:59 +00:00
server_gen.go internal/lsp: update code for LSP protocol 2020-07-28 15:42:44 +00:00
server.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
signature_help.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
symbols.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
text_synchronization.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
workspace_symbol.go internal/lsp/source: add a new symbolStyle configuration option 2020-06-26 17:13:37 +00:00
workspace.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00