-
Notifications
You must be signed in to change notification settings - Fork 18.1k
x/tools/go/packages: use the correct go version for the analyzed project #68495
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
Comments
This is not going to get fixed for [email protected]. @matloob do you understand why GoVersion uses GO111MODULE=off? |
The actual logic dates from https://go.dev/cl/263985, but that doesn't explain why. |
I'm not matloob (😅), but I remember reading this code a really long time ago when it was first sent, and remember it being slightly faster to invoke However, actually digging, that code actually stemmed from CL 253799 where it was previously the code for |
I am matloob but I think @jakebailey has a better answer than I do! I really can't think of a good reason to set |
Change https://go.dev/cl/666715 mentions this issue: |
Thanks. I'll mail you a CL to remove it. |
When the system Go version is newer than the GOTOOLCHAIN go version, we observed the x/tools/go/packages picks up the system Go version as the go version. This can cause the package to use the incompatible
go list
command. @matloob found this is becausex/tools/internal/gocommand.GoVersion
called byx/tools/go/packages.(*golistState).getGoVersion
, usesGO111MODULE=off
which prevents correct go version computation depending on toolchain switch.This bug prevents gopls (v0.15.3, v0.16.0, v0.16.1) from operating with old go versions like go1.19 if the system Go version is newer. (e.g. using
-pgo
flag that doesn't exist in go1.19)This will potentially break the future gopls versions if users rely on the GOTOOLCHAIN to switch to go versions and go/packages ends up using new
go list
flags that do not exist in the GOTOOLCHAIN version but exist in the system Go version.We first need to understand why GoVersion uses
GO111MODULE=off
.cc @golang/tools-team @matloob @findleyr
The text was updated successfully, but these errors were encountered: