go/internal/lsp
Heschi Kreinick 84f0c7cf60 internal/lsp/cache: don't forget files just because they change
The situation in golang/go#35638 was as follows:

didOpen main.go creates a snapshot that knows main.go is in package
"mod.com".
didChange main.go creates a snapshot. When a file changes, we discard
its contents by leaving the file handle out of the "files" map.
didOpen const.go creates a snapshot, and attempts to invalidate the
metadata for packages in the same directory.

The way we detect packages in the same directory is by iterating through
the files in the snapshot. But we threw away the only file in "mod.com"
in step 2 when its contents changed. If a diagnostics run happened to
get in between the two steps, it would re-load main.go and the bug would
go away. If not, step 3 would find no files and fail to invalidate
"mod.com".

The best way to fix this is to insert the new file handle eagerly during
cloning. That way there's no confusion.

Fixes golang/go#35638.

Change-Id: I340bd28a96ad7b4cc912032065f3c2732c380bb2
Reviewed-on: https://go-review.googlesource.com/c/tools/+/211578
Run-TryBot: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2019-12-18 22:55:20 +00:00
..
browser internal/lsp: add version and bug commands 2019-05-11 04:16:02 +00:00
cache internal/lsp/cache: don't forget files just because they change 2019-12-18 22:55:20 +00:00
cmd internal/lsp: change CompletionItem.{Command,TextEdit} to pointers 2019-12-16 22:14:42 +00:00
debug internal/lsp/debug: print the debug port 2019-12-18 04:04:34 +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: change CompletionItem.{Command,TextEdit} to pointers 2019-12-16 22:14:42 +00:00
snippet all: fix broken links to LSP specification 2019-10-02 18:32:53 +00:00
source internal/lsp: return snapshots from text modifications 2019-12-18 22:53:40 +00:00
telemetry internal/lsp: call load in (*session).NewView 2019-11-07 23:34:59 +00:00
testdata internal/lsp: show comments for grouped variable declarations 2019-12-18 20:39:36 +00:00
tests internal/lsp: change CompletionItem.{Command,TextEdit} to pointers 2019-12-16 22:14:42 +00:00
code_action.go internal/lsp: rename CheckPackageHandle to PackageHandle 2019-12-02 18:29:46 +00:00
command.go internal/lsp: fix panic in bestView 2019-11-16 21:44:31 +00:00
completion.go internal/lsp: change CompletionItem.{Command,TextEdit} to pointers 2019-12-16 22:14:42 +00:00
completion_test.go internal/lsp: offer basic type conversion candidates 2019-12-12 22:41:01 +00:00
definition.go internal/lsp: add handling for go.mod files in internal/lsp functions 2019-12-11 23:24:34 +00:00
diagnostics.go internal/lsp: don't resend diagnostics if they are unchanged 2019-12-12 04:27:51 +00:00
folding_range.go internal/lsp: add handling for go.mod files in internal/lsp functions 2019-12-11 23:24:34 +00:00
format.go internal/lsp: add handling for go.mod files in internal/lsp functions 2019-12-11 23:24:34 +00:00
general.go internal/lsp: return snapshot when creating a view 2019-12-05 13:33:17 +00:00
highlight.go internal/lsp: add handling for go.mod files in internal/lsp functions 2019-12-11 23:24:34 +00:00
hover.go internal/lsp: improve link in documentation on hover 2019-12-12 22:39:21 +00:00
implementation.go internal/lsp: fix find-implementation for promoted methods 2019-12-16 21:36:29 +00:00
link.go internal/lsp: add handling for go.mod files in internal/lsp functions 2019-12-11 23:24:34 +00:00
lsp_test.go internal/lsp: return snapshots from text modifications 2019-12-18 22:53:40 +00:00
references.go internal/lsp: fix find-references to search from all package variants 2019-12-11 23:36:49 +00:00
rename.go internal/lsp: add handling for go.mod files in internal/lsp functions 2019-12-11 23:24:34 +00:00
reset_golden.sh internal/lsp: fix regeneration of golden files 2019-09-25 13:16:59 +00:00
server.go internal/lsp: don't resend diagnostics if they are unchanged 2019-12-12 04:27:51 +00:00
signature_help.go internal/lsp: add handling for go.mod files in internal/lsp functions 2019-12-11 23:24:34 +00:00
symbols.go internal/lsp: add handling for go.mod files in internal/lsp functions 2019-12-11 23:24:34 +00:00
text_synchronization.go internal/lsp: return snapshots from text modifications 2019-12-18 22:53:40 +00:00
watched_files.go internal/lsp: move DidModifyFile into internal/lsp/cache 2019-12-12 03:49:59 +00:00
workspace.go internal/lsp: return snapshot when creating a view 2019-12-05 13:33:17 +00:00