go/internal
Muir Manders 8938cee73c internal/lsp/completion: fix invalid struct literal field snippet
In cases like:

    type foo struct { a int; b float64 }
    foo{b<>}

We were completing to "foo{int(b: <float64>)}" (the problem being the
nonsensical int() conversion).

The expected type at "<>" is int to allow completions to match "a".
When we pass the *types.Var representing "b" through the candidate
matching machinery, we say "Oh, a float64! I can convert that to my
expected type of int!".

Fix by bailing out of candidate matching early if the candidate is a
composite literal struct field name. Field names aren't really objects
you can do anything to.

Fixes golang/go#43789.

Change-Id: Ie4dab166973dfcdcb519f864532ead1f792d25a3
Reviewed-on: https://go-review.googlesource.com/c/tools/+/289130
Run-TryBot: Muir Manders <muir@mnd.rs>
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
Trust: Rebecca Stambler <rstambler@golang.org>
Trust: Hyang-Ah Hana Kim <hyangah@gmail.com>
2021-02-05 19:39:40 +00:00
..
analysisinternal internal/lsp/fuzzy: fix return value on no match 2020-08-28 15:37:48 +00:00
apidiff all: add copyright notices to files that are missing them 2021-01-06 17:23:47 +00:00
event all: add copyright notices to files that are missing them 2021-01-06 17:23:47 +00:00
fakenet internal/fakenet: add a fake network connection 2020-05-27 14:27:59 +00:00
fastwalk internal/fastwalk: attempt Symlink tests on Windows 2020-05-21 21:19:27 +00:00
gocommand internal/lsp: re-enable upgrades for individual dependencies 2021-02-01 17:10:16 +00:00
gopathwalk internal/imports: fix crash when adding stdlib imports 2020-08-13 17:47:04 +00:00
imports all: replace all usages of os/exec with golang.org/x/sys/execabs 2021-01-19 22:25:03 +00:00
jsonrpc2 internal/jsonrpc2: remove unused invalidID constant 2021-02-04 15:49:51 +00:00
lsp internal/lsp/completion: fix invalid struct literal field snippet 2021-02-05 19:39:40 +00:00
memoize internal/memoize: add a final argument to Bind for cleaning up 2020-10-30 19:59:21 +00:00
packagesinternal all: add copyright notices to files that are missing them 2021-01-06 17:23:47 +00:00
proxydir all: remove version-specific test files 2020-05-28 17:13:50 +00:00
span internal/typesinternal: use Go 1.16 metadata for go/types errors 2020-12-07 17:42:14 +00:00
stack internal/stack: add the leak test 2020-05-27 14:25:42 +00:00
testenv all: replace all usages of os/exec with golang.org/x/sys/execabs 2021-01-19 22:25:03 +00:00
tool internal/tool: avoid editorialization 2020-03-05 14:01:59 +00:00
typesinternal internal/typesinternal: use Go 1.16 metadata for go/types errors 2020-12-07 17:42:14 +00:00
xcontext internal/lsp: stop making background contexts everywhere 2019-07-11 16:38:52 +00:00