go/gopls/internal/lsp/testdata
Robert Findley b9adce94b7 internal/lsp/source: derive document symbols from syntax alone
The documentSymbols handler joined syntax information with type
information, meaning that it was only able to satisfy requests for files
in valid workspace packages. However, the value added by type
information was limited, and in many cases could be derived from syntax
alone. For example, while generating symbols for a const declaration, we
don't need the type checker to tell us that the symbol kind is const.

Refactor the documentSymbols handler to derive symbols from syntax
alone. This leads to some simplifications from the code, in addition to
eliminating the dependency on package data. Also, simplify symbol
details to just use types.ExprString, which includes some missing
information such as function return values. Also, update handling to
support Go 1.18 type embedding in interfaces.

Notably, this reverts decisions like golang/go#31202, in which we went to
effort to make the symbol kind more accurate. In my opinion (and the
opinion expressed in golang/go#52797), the cost of requiring type
information is not worth the minor improvement in accuracy of the symbol
kind, which (as far as I know) is only used for UI elements.

To facilitate testing (and start to clean up the test framework), make
several simplifications / improvements to the marker tests:
- simplify the collection of symbol data
- eliminate unused marks
- just use cmp.Diff for comparing results
- allow for arbitrary nesting of symbols.
- remove unnecessary @symbol annotations from workspace_symbol tests --
  their data is not used by workspace_symbol handlers
- remove Symbol and WorkspaceSymbol handlers from source_test.go. On
  inspection, these handlers were redundant with lsp_test.go.
Notably, the collection and assembly of @symbol annotations is still way
too complicated. It would be much simpler to just have a single golden
file summarizing the entire output, rather than weaving it together from
annotations. However, I realized this too late, and so it will have to
wait for a separate CL.

Fixes golang/go#52797
Fixes golang/vscode-go#2242
Updates golang/go#54845

Change-Id: I3a2c2d39f59f9d045a6cedf8023ff0c80a69d974
Reviewed-on: https://go-review.googlesource.com/c/tools/+/405254
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
Run-TryBot: Robert Findley <rfindley@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2022-09-23 13:51:08 +00:00
..
%percent gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
addimport gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
address gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
analyzer gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
anon gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
append gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
arraytype gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
assign gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
bad gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
badstmt gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
bar gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
basiclit gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
baz gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
builtins gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
callhierarchy gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
casesensitive gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
cast gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
cgo gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
cgoimport gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
channel gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
codelens gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
comment_completion gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
complit gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
constant gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
danglingstmt gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
deep gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
errors gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
extract internal/lsp: allow extract func ranges to begin/end with comments 2022-09-19 18:18:22 +00:00
fieldlist gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
fillstruct gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
folding gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
foo gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
format gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
func_rank gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
funcsig gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
funcvalue gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
fuzzymatch gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
generate gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
generated gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
godef gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
good gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
highlights gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
implementation gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
importedcomplit gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
imports gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
index gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
inlay_hint gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
interfacerank gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
keywords gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
labels gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
links gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
maps gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
missingfunction gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
multireturn gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
nested_complit gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
nodisk gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
noparse gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
noparse_format gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
printf gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
rank gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
references gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
rename gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
rundespiteerrors gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
selector gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
semantic gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
signature gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
snippets gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
statements gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
stub gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
suggestedfix gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
symbols internal/lsp/source: derive document symbols from syntax alone 2022-09-23 13:51:08 +00:00
testy gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
typdef gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
typeassert gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
typeerrors gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
typemods gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
typeparams gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
types gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
undeclared gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
unimported gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
unresolved gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
unsafe gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
variadic gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
workspacesymbol internal/lsp/source: derive document symbols from syntax alone 2022-09-23 13:51:08 +00:00
summary.txt.golden internal/lsp/source: derive document symbols from syntax alone 2022-09-23 13:51:08 +00:00
summary_go1.18.txt.golden internal/lsp/source: derive document symbols from syntax alone 2022-09-23 13:51:08 +00:00