go/internal/lsp/cache
Rob Findley 0f3931c766 internal/lsp: precompute workspace symbols
Coupling workspace symbols to package checking means that they do not
function when the workspace is contracted, and also forces us to do
duplicate work traversing file declarations.

This CL changes the workspace symbol implementation to precompute
symbols based only on syntactic information, allowing them to function
in degraded workspace mode, improving their performance, and laying the
groundwork for more significant performance improvement later on.

There is some loss of precision where we can't determine the kind of a
symbol from syntactic information alone, but this is minor: we fall back
on 'Class' if we can't determine whether a type definition is a basic
type, struct, or interface.

Benchmark ("test" in x/tools): 56ms->40ms
Benchmark ("test" in kuberneted): 874ms->799ms

Change-Id: Ic48df29b387bf029dd374d7d09720746bc27ae5e
Reviewed-on: https://go-review.googlesource.com/c/tools/+/338692
Trust: Robert Findley <rfindley@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2021-08-09 20:20:17 +00:00
..
analysis.go internal/lsp/cache: be consistent about using snapshot.FileSet 2021-07-08 19:56:07 +00:00
cache.go internal/lsp: remove some unused parameters, mostly in the cache package 2021-03-25 00:26:08 +00:00
check.go internal/lsp: in degraded mode, limit the workspace to active packages 2021-07-26 20:36:31 +00:00
error_test.go internal/lsp/cache: split up sourceDiagnostics 2021-03-02 02:05:13 +00:00
errors.go internal/lsp/cache: be consistent about using snapshot.FileSet 2021-07-08 19:56:07 +00:00
imports.go internal/lsp/cache: fix panic in GOPATH mode 2021-01-07 18:21:03 +00:00
keys.go internal/lsp: decouple client and server debug 2020-06-11 13:49:48 +00:00
load.go internal/lsp: precompute workspace symbols 2021-08-09 20:20:17 +00:00
mod.go internal/lsp: fix support for SourceFixAll code actions 2021-03-24 23:51:27 +00:00
mod_tidy.go internal/lsp: remove unnecessary call to WorkspacePackages in mod tidy 2021-03-30 04:13:47 +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 internal/lsp: handle invalid positions in semantic token debug logic 2021-08-02 20:18:07 +00:00
parse_test.go internal/lsp/cache: trim more stuff in ParseExported mode 2021-05-11 17:48:41 +00:00
pkg.go internal/lsp: improve package search in a couple places 2021-07-13 13:36:40 +00:00
session.go internal/lsp: precompute workspace symbols 2021-08-09 20:20:17 +00:00
snapshot.go internal/lsp: precompute workspace symbols 2021-08-09 20:20:17 +00:00
symbols.go internal/lsp: precompute workspace symbols 2021-08-09 20:20:17 +00:00
view.go internal/lsp/cache: clarify an error message about mismatching casing 2021-08-03 17:18:10 +00:00
view_test.go internal/lsp: exclude the module cache from the workspace 2021-06-11 17:18:39 +00:00
workspace.go internal/lsp: start parsing go.work file like gopls.mod file 2021-06-24 04:20:31 +00:00
workspace_test.go internal/lsp: start parsing go.work file like gopls.mod file 2021-06-24 04:20:31 +00:00