1
0
mirror of https://github.com/golang/go synced 2024-11-19 00:54:42 -07:00
go/internal/lsp/source
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
..
analysis.go internal/lsp: add more error handling to analysis 2019-04-22 21:49:46 +00:00
completion.go internal/lsp: improve composite literal completion 2019-04-23 22:28:03 +00:00
diagnostics.go internal/lsp: add more error handling to analysis 2019-04-22 21:49:46 +00:00
enums.go internal/lsp: switch completion item tests to using the enum strings 2019-04-17 17:57:43 +00:00
format.go internal/lsp: normalise and make public diff<->edit conversions 2019-04-15 20:31:36 +00:00
highlight.go internal/lsp: add support for document highlight 2019-03-26 19:08:20 +00:00
hover.go internal/lsp: support comments on hover for typenames, funcs, fields 2019-04-22 16:38:38 +00:00
identifier.go internal/lsp: add check for nil package 2019-04-22 21:23:51 +00:00
signature_help.go internal/lsp: improve signatureHelp in various cases 2019-04-17 18:10:49 +00:00
symbols.go internal/lsp: fix crash when there is a type alias to a struct in the symbols code 2019-04-16 15:17:39 +00:00
view.go internal/lsp: use ast.Nodes for hover information 2019-04-18 23:52:43 +00:00