golang / vscode-go

Go extension for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=golang.Go
Other
3.78k stars 728 forks source link

extension crashes if `go.mod` uses language version and the local go version is older than the go version in `go.mod` #3317

Open hyangah opened 2 months ago

hyangah commented 2 months ago

Repro case:

$ GOTOOLCHAIN=local go version
go1.21.9
$ cat go.mod
module w

go 1.22

Screenshot 2024-04-05 at 3 41 23 PM

Failed to run '/usr/local/go/bin/go env' (cwd: /Users/hakim/projects/go-qrcode): Error: Command failed: /usr/local/go/bin/go env -json GOPATH GOROOT GOPROXY GOBIN GOMODCACHE
go: downloading go1.22 (darwin/amd64)
go: download go1.22 for darwin/amd64: toolchain not available

go: downloading go1.22 (darwin/amd64)
go: download go1.22 for darwin/amd64: toolchain not available

The root cause is https://github.com/golang/go/issues/65580 that was closed as a duplicate of https://github.com/golang/go/issues/62278, which was closed in favor of a better error message.

cc @golang/tools-team

rhcarvalho commented 1 month ago

I'm seeing a similar problem, but go.work instead of go.mod. I believe the underlying problem to be the same.

Error loading workspace: packages.Load error: err: exit status 1: stderr: go: go.work requires go >= 1.22.3 (running go 1.22.2)

Running go version on the integrated terminal gives:

go version go1.22.3 linux/amd64

Thus the go1.22.2 toolchain was able to download and use the go1.22.3 toolchain, but gopls doesn't pick it up.

matloob commented 1 month ago

@hyangah We expect this to be fixed once 1.21.11 is released with the backported change to download 1.22.0 when 1.22 is listed in go.mod, right?