go/internal/lsp/testdata
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
..
%percent internal/lsp/testdata: remove diagnostic from percent package 2020-10-01 18:36:08 +00:00
addimport internal/lsp: add list_known_packages and add_import commands 2021-05-23 03:57:00 +00:00
address lsp/completion: reorganize how we track candidate type mods 2021-06-09 15:58:13 +00:00
analyzer tools: make printf analysis have more helpful output 2021-05-21 23:19:31 +00:00
anon internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
append lsp/completion: reorganize how we track candidate type mods 2021-06-09 15:58:13 +00:00
arraytype lsp/completion: offer candidates converting arrays to slices 2021-04-22 04:15:51 +00:00
assign internal/lsp/source: omit assign stmt LHS in RHS completion 2020-12-07 20:43:33 +00:00
bad internal/typesinternal: use Go 1.16 metadata for go/types errors 2020-12-07 17:42:14 +00:00
badstmt internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
bar internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
basiclit internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
baz internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
builtins internal/lsp/completion: fix untyped int type inference 2021-02-05 20:20:24 +00:00
callhierarchy internal/lsp: include function literals in outgoing call hierarchy 2021-06-01 22:58:04 +00:00
casesensitive internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
cast internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
cgo internal/lsp: add ?utm_source=gopls to links to pkg.go.dev 2020-11-16 00:15:58 +00:00
cgoimport internal/lsp: add ?utm_source=gopls to links to pkg.go.dev 2020-11-16 00:15:58 +00:00
channel internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
codelens internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
comment_completion internal/lsp/source: refactor c.item to support deepSearch in all cases 2020-10-01 23:00:09 +00:00
complit lsp/completion: reorganize how we track candidate type mods 2021-06-09 15:58:13 +00:00
constant internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
danglingstmt internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
deep lsp/completion: reorganize how we track candidate type mods 2021-06-09 15:58:13 +00:00
errors internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
extract internal/lsp: add extract to method code action 2021-07-23 18:08:39 +00:00
fieldlist internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
fillstruct gopls, internal/lsp: support fillstruct for partially-filled structs 2020-11-30 20:22:45 +00:00
folding internal/lsp: fix folding range for block comments 2021-06-07 15:13:07 +00:00
foo internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
format internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
func_rank internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
funcsig internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
funcvalue internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
fuzzymatch internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
generate internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
generated internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
godef internal/lsp/source: add inferred types to generic function hover 2021-06-22 16:07:17 +00:00
good internal/lsp/source: make it an error to rename embedded fields 2021-01-26 13:52:46 +00:00
highlights internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
implementation internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
importedcomplit internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
imports internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
index internal/lsp/completion: fix untyped int type inference 2021-02-05 20:20:24 +00:00
interfacerank internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
keywords internal/lsp: fix some incorrect spelling 2020-11-24 11:59:21 +00:00
labels internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
links internal/lsp: add ?utm_source=gopls to links to pkg.go.dev 2020-11-16 00:15:58 +00:00
maps lsp/completion: reorganize how we track candidate type mods 2021-06-09 15:58:13 +00:00
multireturn lsp/completion: fix variadic param candidate ordering edge case 2021-06-01 17:02:03 +00:00
nested_complit internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
nodisk internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
noparse internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
noparse_format internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
printf internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
rank lsp/completion: reorganize how we track candidate type mods 2021-06-09 15:58:13 +00:00
references internal/lsp: find references for ident before selector 2021-08-02 19:06:04 +00:00
rename internal/lsp/source: fix comment update during rename for short variable declarations 2021-07-12 21:21:15 +00:00
selector internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
semantic internal/lsp/semantic: improve semantic token processing 2021-07-14 22:42:09 +00:00
signature internal/lsp: skip signature help within a string literal 2021-07-26 16:44:13 +00:00
snippets lsp/completion: don't offer untyped conversions 2021-06-04 17:45:44 +00:00
statements internal/lsp: add snippet completion for t.Fatal errs 2021-03-15 21:39:02 +00:00
suggestedfix internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
symbols internal/lsp: don't show blank identifiers in outline 2020-10-09 01:09:51 +00:00
testy internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
typdef internal/lsp/source: support typeDefinition for function/method's return values 2021-05-06 03:15:21 +00:00
typeassert lsp/completion: reorganize how we track candidate type mods 2021-06-09 15:58:13 +00:00
typeerrors internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
typemods lsp/completion: support completing to Elem() types 2021-06-09 15:58:30 +00:00
types internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
undeclared internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
unimported internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
unresolved internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
unsafe internal/lsp: update unsafe completion test for upcoming spec changes 2021-04-22 02:57:26 +00:00
variadic internal/lsp: remove multi-module support in tests 2020-09-22 16:28:30 +00:00
workspacesymbol internal/lsp: precompute workspace symbols 2021-08-09 20:20:17 +00:00
summary.txt.golden internal/lsp: find references for ident before selector 2021-08-02 19:06:04 +00:00
summary_generics.txt.golden internal/typeparams: update x/tools for recent typeparams changes 2021-08-03 15:39:08 +00:00