-
Notifications
You must be signed in to change notification settings - Fork 18.8k
Closed
Labels
FrozenDueToAgeToolsThis label describes issues relating to any tools in the x/tools repository.This label describes issues relating to any tools in the x/tools repository.goplsIssues related to the Go language server, gopls.Issues related to the Go language server, gopls.gopls/completionIssues related to auto-completion in gopls.Issues related to auto-completion in gopls.gopls/genericsIssues related to gopls' support for genericsIssues related to gopls' support for generics
Milestone
Description
gopls version
$ gopls -v version
Build info
----------
golang.org/x/tools/gopls v0.12.4
golang.org/x/tools/gopls@v0.12.4 h1:nce5etAamR46d9oNGxop1aRK5rDQ0NqcY/SHIcyfEKY=
github.com/BurntSushi/toml@v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
github.com/google/go-cmp@v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/sergi/go-diff@v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
golang.org/x/exp@v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
golang.org/x/exp/typeparams@v0.0.0-20221212164502-fae10dda9338 h1:2O2DON6y3XMJiQRAS1UWU+54aec2uopH3x7MAiqGW6Y=
golang.org/x/mod@v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU=
golang.org/x/sync@v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
golang.org/x/sys@v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s=
golang.org/x/text@v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58=
golang.org/x/tools@v0.10.1-0.20230622221742-0622ad2359a7 h1:5PWemM67wMSPpO0Y3lOPlyvgO3z56YkZRxPFcdd300g=
golang.org/x/vuln@v0.0.0-20230110180137-6ad3e3d07815 h1:A9kONVi4+AnuOr1dopsibH6hLi1Huy54cbeJxnq4vmU=
honnef.co/go/tools@v0.4.2 h1:6qXr+R5w+ktL5UkwEbPp+fEvfyoMPche6GkOpGHZcLc=
mvdan.cc/gofumpt@v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM=
mvdan.cc/xurls/v2@v2.4.0 h1:tzxjVAj+wSBmDcF6zBB7/myTy3gX9xvi8Tyr28AuQgc=
go: go1.20.4
go env
$ go env
GO111MODULE=""
GOARCH="arm64"
GOBIN=""
GOCACHE="/Users/reducted/Library/Caches/go-build"
GOENV="/Users/reducted/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/reducted/go/pkg/mod"
GONOPROXY="reducted"
GONOSUMDB="reducted"
GOOS="darwin"
GOPATH="/Users/reducted/go"
GOPRIVATE="reducted"
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/opt/homebrew/Cellar/go/1.20.4/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/opt/homebrew/Cellar/go/1.20.4/libexec/pkg/tool/darwin_arm64"
GOVCS=""
GOVERSION="go1.20.4"
GCCGO="gccgo"
AR="ar"
CC="cc"
CXX="c++"
CGO_ENABLED="1"
GOMOD="reducted"
GOWORK=""
CGO_CFLAGS="-O2 -g"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-O2 -g"
CGO_FFLAGS="-O2 -g"
CGO_LDFLAGS="-O2 -g"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/6_/msm1_r211ds7gwg7dv3zw8j40000gn/T/go-build420238562=/tmp/go-build -gno-record-gcc-switches -fno-common"
What did you do?
A bugged snippet:
package main
type Helloer interface {
Hello() string
}
type Bob struct{}
func (b *Bob) Hello() string {
return "Hello, I'm Bob"
}
type GreetingMachine[T Helloer] struct {
Greeter T
}
func (gm *GreetingMachine[T]) GreetFunc(f func(T)) { // pointer receiver here
f(gm.Greeter)
}
func main() {
gm := &GreetingMachine[*Bob]{
Greeter: &Bob{},
}
// try autocomplete on `gm.GreetFunc(f)`
gm.GreetFunc(func(t T) {}) // autocomplete here gives `func(t T) {}`
}A working version:
package main
type Helloer interface {
Hello() string
}
type Bob struct{}
func (b *Bob) Hello() string {
return "Hello, I'm Bob"
}
type GreetingMachine[T Helloer] struct {
Greeter T
}
func (gm GreetingMachine[T]) GreetFunc(f func(T)) { // change to a value receiver
f(gm.Greeter)
}
func main() {
gm := &GreetingMachine[*Bob]{
Greeter: &Bob{},
}
// try autocomplete on `gm.GreetFunc(f)`
gm.GreetFunc(func(b *Bob) {}) // autocomplete here gives `func(b *Bob) {}`
}What did you expect to see?
See the comment on the snippet code above.
What did you see instead?
See the comment on the snippet code above.
Editor and settings
VSCode
Logs
Nothing useful...
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
FrozenDueToAgeToolsThis label describes issues relating to any tools in the x/tools repository.This label describes issues relating to any tools in the x/tools repository.goplsIssues related to the Go language server, gopls.Issues related to the Go language server, gopls.gopls/completionIssues related to auto-completion in gopls.Issues related to auto-completion in gopls.gopls/genericsIssues related to gopls' support for genericsIssues related to gopls' support for generics