1
0
mirror of https://github.com/golang/go synced 2024-11-18 20:54:40 -07:00
go/internal/lsp
Heschi Kreinick 76a3b8da50 internal/memoize: propagate cancellation
If a user is typing fast, they will quickly invalidate many snapshots.
We don't want to stack up a bunch of stale type check and analysis
operations, so we should propagate cancellation through the cache.

Handles are long-lived, so we may cancel an operation only to
restart it again later. Also, there may be multiple operations waiting on
the same computation, and just because one is cancelled doesn't mean we
should necessarily stop. The easiest way to support all that was to add
an explicit state to each handle, and track the number of waiters.

See the code for more details on Handle life cycles.

As far as I can tell, the rest of gopls is prepared for this behavior.
I added an explicit check to the type checking code, where I was worried
it might get overly confused. But long-term it would probably be good to
return an error from Get.

Change-Id: I3ea6e141b52b94300a41248d3f2e039b023709d0
Reviewed-on: https://go-review.googlesource.com/c/tools/+/206879
Run-TryBot: Heschi Kreinick <heschi@google.com>
Reviewed-by: Ian Cottrell <iancottrell@google.com>
2019-11-12 23:22:37 +00:00
..
browser internal/lsp: add version and bug commands 2019-05-11 04:16:02 +00:00
cache internal/memoize: propagate cancellation 2019-11-12 23:22:37 +00:00
cmd tools/gopls: add cmd support for folding_ranges 2019-11-12 00:55:09 +00:00
debug internal/lsp: fix the debug info pages 2019-11-04 23:16:26 +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: fix fuzzy matcher inconsistency 2019-10-22 21:05:28 +00:00
protocol internal/lsp/protocol: define types in alphabetical order in tsprotocol.go 2019-11-11 13:44:43 +00:00
snippet all: fix broken links to LSP specification 2019-10-02 18:32:53 +00:00
source internal/lsp/source: unify import adding code 2019-11-12 22:26:51 +00:00
telemetry internal/lsp: call load in (*session).NewView 2019-11-07 23:34:59 +00:00
testdata internal/lsp: support implementations requests for implementations in other packages 2019-11-12 18:49:59 +00:00
tests tools/gopls: add cmd support for folding_ranges 2019-11-12 00:55:09 +00:00
code_action.go internal/lsp: remove analyzers from Analyze result 2019-10-25 02:35:17 +00:00
command.go internal/lsp: rework snapshots and cache FileHandles per-snapshot 2019-10-01 16:26:22 +00:00
completion_test.go internal/lsp: make View.SetOptions save and useful 2019-11-12 16:15:35 +00:00
completion.go internal/lsp: fix VSCode's reordering of completion candidates 2019-10-24 16:29:03 +00:00
definition.go internal/lsp: rework snapshots and cache FileHandles per-snapshot 2019-10-01 16:26:22 +00:00
diagnostics.go go/analysis, internal/lsp: add support for related information 2019-10-21 19:00:55 +00:00
folding_range.go internal/lsp: rework snapshots and cache FileHandles per-snapshot 2019-10-01 16:26:22 +00:00
format.go internal/lsp: change to protocol.TextEdit for formatting 2019-09-06 17:54:09 +00:00
general.go internal/lsp: call load in (*session).NewView 2019-11-07 23:34:59 +00:00
highlight.go x/tools/gopls: convert to the august, 2019 version of the LSP protocol 2019-09-08 13:59:31 +00:00
hover.go internal/lsp: convert comments to markdown before sending to client 2019-10-04 18:35:38 +00:00
implementation.go internal/lsp: add support for implements to the LSP 2019-10-31 16:03:44 +00:00
link.go internal/lsp: rework snapshots and cache FileHandles per-snapshot 2019-10-01 16:26:22 +00:00
lsp_test.go internal/lsp: make View.SetOptions save and useful 2019-11-12 16:15:35 +00:00
references.go internal/lsp: rework snapshots and cache FileHandles per-snapshot 2019-10-01 16:26:22 +00:00
rename.go internal/lsp: rework snapshots and cache FileHandles per-snapshot 2019-10-01 16:26:22 +00:00
reset_golden.sh internal/lsp: fix regeneration of golden files 2019-09-25 13:16:59 +00:00
server.go internal/lsp: handle the didChangeConfiguration message 2019-11-12 16:15:42 +00:00
signature_help.go internal/lsp: rework snapshots and cache FileHandles per-snapshot 2019-10-01 16:26:22 +00:00
symbols.go internal/lsp: rework snapshots and cache FileHandles per-snapshot 2019-10-01 16:26:22 +00:00
text_synchronization.go internal/lsp: fix nil pointer in textDocument/didClose 2019-11-04 17:19:25 +00:00
watched_files.go internal/lsp: type check packages in parallel 2019-10-29 04:13:27 +00:00
workspace.go internal/lsp: handle the didChangeConfiguration message 2019-11-12 16:15:42 +00:00