cmd/go: inject State parameter into modcmd.runVerify

This command modifies the call tree starting at `modcmd.runVerify` 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/modcmd
rf 'inject modload.LoaderState runVerify'
cd ..
./rf-cleanup.zsh

Change-Id: I5b3b4670a4e2d19375049e585035145d14248b40
Reviewed-on: https://go-review.googlesource.com/c/go/+/709985
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>
This commit is contained in:
Ian Alexander 2025-10-01 23:21:21 -04:00
parent 0f820aca29
commit f859799ccf

View file

@ -71,7 +71,7 @@ func runVerify(ctx context.Context, cmd *base.Command, args []string) {
errsChans[i] = errsc errsChans[i] = errsc
mod := mod // use a copy to avoid data races mod := mod // use a copy to avoid data races
go func() { go func() {
errsc <- verifyMod(ctx, mod) errsc <- verifyMod(modload.LoaderState, ctx, mod)
<-sem <-sem
}() }()
} }
@ -89,12 +89,12 @@ func runVerify(ctx context.Context, cmd *base.Command, args []string) {
} }
} }
func verifyMod(ctx context.Context, mod module.Version) []error { func verifyMod(loaderstate *modload.State, ctx context.Context, mod module.Version) []error {
if gover.IsToolchain(mod.Path) { if gover.IsToolchain(mod.Path) {
// "go" and "toolchain" have no disk footprint; nothing to verify. // "go" and "toolchain" have no disk footprint; nothing to verify.
return nil return nil
} }
if modload.LoaderState.MainModules.Contains(mod.Path) { if loaderstate.MainModules.Contains(mod.Path) {
return nil return nil
} }
var errs []error var errs []error