1
0
mirror of https://github.com/golang/go synced 2024-11-18 20:34:39 -07:00
go/internal/lsp/testdata/channel/channel.go
Muir Manders 22e91af008 internal/lsp: apply type modifiers to completion candidate
In situations like:

var buf bytes.Buffer
var w io.Writer = &b<>

if we want to complete to "buf" properly we need to apply the "&" type
modifier to buf's type of bytes.Buffer to see that it is assignable
to type io.Writer. Previously we applied type modifiers in reverse to
the "expected" type (io.Writer in this case), but that is obviously
incorrect in this situation since it is nonsensical to
dereference (the reverse of "&") io.Writer.

Change-Id: Ib7ab5761f625217e023286384c23b8c60e677aac
GitHub-Last-Rev: 4be528f2572c9c987334552e3f8a31d4eddce81a
GitHub-Pull-Request: golang/tools#121
Reviewed-on: https://go-review.googlesource.com/c/tools/+/182598
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2019-06-19 20:27:14 +00:00

26 lines
613 B
Go

package channel
func _() {
var (
aa = "123" //@item(channelAA, "aa", "string", "var")
ab = 123 //@item(channelAB, "ab", "int", "var")
)
{
type myChan chan int
var mc myChan
mc <- a //@complete(" //", channelAB, channelAA)
}
{
var ac chan int //@item(channelAC, "ac", "chan int", "var")
a <- a //@complete(" <-", channelAC, channelAA, channelAB)
}
{
var foo chan int //@item(channelFoo, "foo", "chan int", "var")
wantsInt := func(int) {} //@item(channelWantsInt, "wantsInt", "func(int)", "var")
wantsInt(<-) //@complete(")", channelFoo, channelAB, channelWantsInt, channelAA)
}
}