tools/internal/lsp
Muir Manders 49ba83114e internal/lsp: improve composite literal completion
When the value of a composite literal key/value pair was unparsable,
you were getting completions for the composite literal keys instead of
values. For example "struct { foo int }{foo: []<>" was completing to
the field name "foo". This was because the leaf ast.Node at the cursor
was the composite literal itself, and our go-back-one-character logic
was not happening because the preceding character's node
was *ast.BadExpr, not *ast.Ident. Fix by always generating the ast
path for the character before the cursor's position. I couldn't find
any cases where this broke completion.

I also added expected type detection for the following composite
literal cases:
- array/slice literals
- struct literals (both implicit and explicit field names)
- map keys and values

Fixes golang/go#29153

Change-Id: If8cf678cbd743a970f52893fcf4a9b83ea06d7e9
GitHub-Last-Rev: f385705cc05eb98132e20561451dbb8c39b68519
GitHub-Pull-Request: golang/tools#86
Reviewed-on: https://go-review.googlesource.com/c/tools/+/173099
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2019-04-23 22:28:03 +00:00
..
cache internal/lsp: use ast.Nodes for hover information 2019-04-18 23:52:43 +00:00
cmd internal/lsp: fix error handling in cmd 2019-04-22 18:06:12 +00:00
diff internal/lsp: normalise and make public diff<->edit conversions 2019-04-15 20:31:36 +00:00
protocol internal/lsp: fix typo on 'textDocument/foldingRange' method 2019-04-22 18:44:13 +00:00
source internal/lsp: improve composite literal completion 2019-04-23 22:28:03 +00:00
testdata internal/lsp: improve composite literal completion 2019-04-23 22:28:03 +00:00
tests internal/lsp: improve composite literal completion 2019-04-23 22:28:03 +00:00
xlog internal/lsp: add the ability to log back to the client 2019-04-01 16:22:08 +00:00
code_action.go internal/lsp: run source.organizeImports on all codeActions 2019-04-16 21:54:00 +00:00
completion.go internal/lsp: add type to placeholders in completion parameters 2019-04-19 19:58:23 +00:00
definition.go internal/lsp: refactor server.go to separate into LSP categories 2019-04-17 20:54:51 +00:00
diagnostics.go internal/lsp: add additional debug logging for diagnostics 2019-04-22 21:11:31 +00:00
format.go internal/lsp: refactor server.go to separate into LSP categories 2019-04-17 20:54:51 +00:00
general.go internal/lsp: use ast.Nodes for hover information 2019-04-18 23:52:43 +00:00
highlight.go internal/lsp: refactor server.go to separate into LSP categories 2019-04-17 20:54:51 +00:00
hover.go internal/lsp: support comments on hover for typenames, funcs, fields 2019-04-22 16:38:38 +00:00
lsp_test.go internal/lsp: improve composite literal completion 2019-04-23 22:28:03 +00:00
server.go internal/lsp: fix typo on 'textDocument/foldingRange' method 2019-04-22 18:44:13 +00:00
signature_help.go internal/lsp: refactor server.go to separate into LSP categories 2019-04-17 20:54:51 +00:00
symbols.go internal/lsp: refactor server.go to separate into LSP categories 2019-04-17 20:54:51 +00:00
text_synchronization.go internal/lsp: add additional debug logging for diagnostics 2019-04-22 21:11:31 +00:00
util.go internal/lsp: refactor server.go to separate into LSP categories 2019-04-17 20:54:51 +00:00