go/internal/lsp/cache
Rob Findley 9f38ef7f15 internal/lsp/cache: derive workspace packages from metadata
Now that we preserve stale metadata, we can derive workspace packages
entirely from known metadata and files. This consolidates the logic to
compute workspace packages into a single location, which can be invoked
whenever metadata changes (via load or invalidation in clone).

Additionally:
 - Precompute 'HasWorkspaceFiles' when loading metadata. This value
   should never change for a given Metadata, and our view.contains func
   is actually quite slow due to evaluating symlinks.
 - Track 'PkgFilesChanged' on KnownMetadata, since we don't include
   packages whose package name has changed in our workspace.

Also introduce a few debug helpers, so that we can leave some
instrumentation in critical functions.

For golang/go#45686

Change-Id: I2c994a1e8ca05c3c42f67bd2f4519bea5095c54c
Reviewed-on: https://go-review.googlesource.com/c/tools/+/340735
Run-TryBot: Robert Findley <rfindley@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
2022-06-16 15:49:38 +00:00
..
analysis.go internal/lsp/cache: use [256]byte Hash instead of hex digit string 2022-06-13 13:05:07 +00:00
cache.go internal/lsp/cache: use [256]byte Hash instead of hex digit string 2022-06-13 13:05:07 +00:00
check.go Revert "internal/lsp/cache: reduce critical sections" 2022-06-16 15:42:24 +00:00
debug.go internal/lsp/cache: derive workspace packages from metadata 2022-06-16 15:49:38 +00:00
error_test.go internal/lsp/cache: split up sourceDiagnostics 2021-03-02 02:05:13 +00:00
errors.go internal/span: eliminate TokenConverter 2022-06-01 19:19:15 +00:00
graph.go internal/lsp/cache: move metadata fields to a new metadataGraph type 2022-06-08 22:15:25 +00:00
imports.go internal/lsp/cache: use [256]byte Hash instead of hex digit string 2022-06-13 13:05:07 +00:00
keys.go internal/lsp: decouple client and server debug 2020-06-11 13:49:48 +00:00
load.go internal/lsp/cache: derive workspace packages from metadata 2022-06-16 15:49:38 +00:00
metadata.go internal/lsp/cache: derive workspace packages from metadata 2022-06-16 15:49:38 +00:00
mod.go internal/lsp/cache: use [256]byte Hash instead of hex digit string 2022-06-13 13:05:07 +00:00
mod_tidy.go internal/lsp/cache: use [256]byte Hash instead of hex digit string 2022-06-13 13:05:07 +00:00
os_darwin.go internal/lsp/cache: clarify an error message about mismatching casing 2021-08-03 17:18:10 +00:00
os_windows.go internal/lsp/cache: clarify an error message about mismatching casing 2021-08-03 17:18:10 +00:00
parse.go Revert "internal/lsp/cache: reduce critical sections" 2022-06-16 15:42:24 +00:00
parse_test.go internal/lsp/cache: trim more stuff in ParseExported mode 2021-05-11 17:48:41 +00:00
parsemode_go116.go internal/lsp/cache: use cached parsed files for symbols, if available 2022-05-09 17:04:06 +00:00
parsemode_go117.go internal/lsp/cache: use cached parsed files for symbols, if available 2022-05-09 17:04:06 +00:00
pkg.go gopls: remove usage of golang.org/x/xerrors 2022-04-20 15:33:22 +00:00
session.go internal/lsp/cache: use [256]byte Hash instead of hex digit string 2022-06-13 13:05:07 +00:00
snapshot.go internal/lsp/cache: derive workspace packages from metadata 2022-06-16 15:49:38 +00:00
symbols.go internal/lsp/cache: use [256]byte Hash instead of hex digit string 2022-06-13 13:05:07 +00:00
view.go internal/lsp/cache: use [256]byte Hash instead of hex digit string 2022-06-13 13:05:07 +00:00
view_test.go internal/lsp/cache: always consider go.work files for ws expansion 2022-03-07 16:11:49 +00:00
workspace.go gopls: remove usage of golang.org/x/xerrors 2022-04-20 15:33:22 +00:00
workspace_test.go internal/lsp/cache: construct workspace even when go.work has error 2022-03-03 21:30:30 +00:00