]> Cypherpunks repositories - gostls13.git/commit
cmd/go: inject State parameter into `toolchain.Select`
authorIan Alexander <jitsu@google.com>
Fri, 3 Oct 2025 01:45:53 +0000 (21:45 -0400)
committerIan Alexander <jitsu@google.com>
Mon, 20 Oct 2025 19:56:03 +0000 (12:56 -0700)
commite7c66a58d50b93c2cd1a4eb51a437d750757177e
tree37950fee60f78736ae6af71076d5fc4580a81196
parent4dc3dd9a8615c88bef9247c9bab57e2b04bc662e
cmd/go: inject State parameter into `toolchain.Select`

This command modifies the call tree starting at `toolchain.Select` to
inject a `State` parameter to every function that is currently using
the global `modload.LoaderState` variable.  By explicilty passing a
`State` parameter, we can begin to eliminate the usage of the global
`modload.LoaderState`.

This commit is part of the overall effort to eliminate global
modloader state.

[git-generate]
cd src/cmd/go/internal/toolchain
rf '
  inject modload.LoaderState Select
  add select.go var moduleLoaderState *modload.State
  ex {
    import "cmd/go/internal/modload";
    modload.LoaderState -> moduleLoaderState
  }
  add Select://+0 moduleLoaderState := modload.NewState()
  rm select.go:/var moduleLoaderState \*modload.State/
'
cd ..
./rf-cleanup.zsh

Change-Id: I759439a47e2b1aaa01a0a800bc18596dd7ce4983
Reviewed-on: https://go-review.googlesource.com/c/go/+/709988
Reviewed-by: Michael Matloob <matloob@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
src/cmd/go/internal/modcmd/download.go
src/cmd/go/internal/modcmd/graph.go
src/cmd/go/internal/modcmd/tidy.go
src/cmd/go/internal/modget/get.go
src/cmd/go/internal/modload/init.go
src/cmd/go/internal/telemetrystats/telemetrystats.go
src/cmd/go/internal/toolchain/select.go
src/cmd/go/internal/toolchain/switch.go
src/cmd/go/internal/workcmd/sync.go