Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x/tools/gopls: completion and quick fix for filling in type parameters in generic types #64501

Open
suzmue opened this issue Dec 1, 2023 · 0 comments
Labels
FeatureRequest gopls/completion Issues related to auto-completion in gopls. gopls/generics Issues related to gopls' support for generics gopls Issues related to the Go language server, gopls. Tools This label describes issues relating to any tools in the x/tools repository.
Milestone

Comments

@suzmue
Copy link
Contributor

suzmue commented Dec 1, 2023

gopls version

Build info ---------- golang.org/x/tools/gopls v0.14.2 golang.org/x/tools/gopls@v0.14.2 h1:sIw6vjZiuQ9S7s0auUUkHlWgsCkKZFWDHmrge8LYsnc= 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/typeparams@v0.0.0-20221212164502-fae10dda9338 h1:2O2DON6y3XMJiQRAS1UWU+54aec2uopH3x7MAiqGW6Y= golang.org/x/mod@v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/sync@v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sys@v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= golang.org/x/telemetry@v0.0.0-20231114163143-69313e640400 h1:brbkEFfGwNGAEkykUOcryE/JiHUMMJouzE0fWWmz/QU= golang.org/x/text@v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/tools@v0.14.1-0.20231114185516-c9d3e7de13fd h1:Oku7E+OCrXHyst1dG1z10etCTxewCHXNFLRlyMPbh3w= golang.org/x/vuln@v1.0.1 h1:KUas02EjQK5LTuIx1OylBQdKKZ9jeugs+HiqO5HormU= honnef.co/go/tools@v0.4.5 h1:YGD4H+SuIOOqsyoLOpZDWcieM28W47/zRO7f+9V3nvo= mvdan.cc/gofumpt@v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM= mvdan.cc/xurls/v2@v2.4.0 h1:tzxjVAj+wSBmDcF6zBB7/myTy3gX9xvi8Tyr28AuQgc= go: go1.21.1

go env

GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/Users/suzmue/Library/Caches/go-build'
GOENV='/Users/suzmue/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMODCACHE='/Users/suzmue/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='darwin'
GOPATH='/Users/suzmue/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/Users/suzmue/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.2.darwin-amd64'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/Users/suzmue/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.2.darwin-amd64/pkg/tool/darwin_amd64'
GOVCS=''
GOVERSION='go1.21.2'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='clang'
CXX='clang++'
CGO_ENABLED='1'
GOMOD='/Users/suzmue/helloWorld/go.mod'
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 x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/2x/hlwbwjzd1vd4brlfs80676fw00fkl_/T/go-build1491560032=/tmp/go-build -gno-record-gcc-switches -fno-common'

What did you do?

main.go:

package main

import "fmt"

type A[T any] struct {
	foo T
}

type B[T any] struct {
	foo []T
}

func main() {
	var a *A[int] = new(A) // diagnostic: "cannot use generic type A[T any] without instantiation"
	a.foo = 1
	a2 := &A{ // diagnostic: "cannot use generic type A[T any] without instantiation"
		foo: "hello",
	}
	fmt.Printf("%d %s\n", a.foo, a2.foo)
	b := B{ // diagnostic: "cannot use generic type B[T any] without instantiation"
		foo: []int{1, 2, 3},
	}
	fmt.Printf("%d\n", len(b.foo))
}

What did you expect to see?

  1. Completions with the correct type when adding [ when filling in the type parameters.
  2. Quick Fix for adding the missing type parameter which can be inferred in these cases.

What did you see instead?

No quick fixes available and completions were for other types (same order for all):

Screenshot 2023-12-01 at 9 54 37 AM

Editor and settings

VS Code

Logs

No response

@suzmue suzmue added gopls Issues related to the Go language server, gopls. Tools This label describes issues relating to any tools in the x/tools repository. labels Dec 1, 2023
@gopherbot gopherbot added this to the Unreleased milestone Dec 1, 2023
@suzmue suzmue changed the title x/tools/gopls: issue title x/tools/gopls: code assistance for filling in type parameters in generic types Dec 1, 2023
@suzmue suzmue modified the milestones: Unreleased, gopls/backlog Dec 1, 2023
@suzmue suzmue changed the title x/tools/gopls: code assistance for filling in type parameters in generic types x/tools/gopls: completion and quick fix for filling in type parameters in generic types Dec 1, 2023
@suzmue suzmue added gopls/completion Issues related to auto-completion in gopls. gopls/generics Issues related to gopls' support for generics FeatureRequest labels Dec 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
FeatureRequest gopls/completion Issues related to auto-completion in gopls. gopls/generics Issues related to gopls' support for generics gopls Issues related to the Go language server, gopls. Tools This label describes issues relating to any tools in the x/tools repository.
Projects
None yet
Development

No branches or pull requests

2 participants