From 69673e9be2f1724c5425d5f7240cd26d0ddba854 Mon Sep 17 00:00:00 2001 From: Ian Alexander Date: Wed, 8 Oct 2025 20:23:24 -0400 Subject: [PATCH] cmd/go: use local state object in `tool.runTool` This commit modifies `tool.runTool` to construct a new modload.State object using the new constructor instead of the current global `modload.LoaderState` variable. This commit is part of the overall effort to eliminate global modloader state. [git-generate] cd src/cmd/go/internal/tool rf ' add tool.go:/func runTool\(/-0 var moduleLoaderState *modload.State ex { import "cmd/go/internal/modload"; modload.LoaderState -> moduleLoaderState } add runTool://+0 moduleLoaderState := modload.NewState() rm tool.go:/var moduleLoaderState \*modload.State/ ' Change-Id: I0aff1bc2b57d973c258510dc52fb877fa824355c Reviewed-on: https://go-review.googlesource.com/c/go/+/711128 Reviewed-by: Michael Matloob LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Matloob --- src/cmd/go/internal/tool/tool.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/cmd/go/internal/tool/tool.go b/src/cmd/go/internal/tool/tool.go index 7ffc50fc87a..e283c7354f5 100644 --- a/src/cmd/go/internal/tool/tool.go +++ b/src/cmd/go/internal/tool/tool.go @@ -78,9 +78,10 @@ func init() { } func runTool(ctx context.Context, cmd *base.Command, args []string) { + moduleLoaderState := modload.NewState() if len(args) == 0 { counter.Inc("go/subcommand:tool") - listTools(modload.LoaderState, ctx) + listTools(moduleLoaderState, ctx) return } toolName := args[0] @@ -108,14 +109,14 @@ func runTool(ctx context.Context, cmd *base.Command, args []string) { if tool := loadBuiltinTool(toolName); tool != "" { // Increment a counter for the tool subcommand with the tool name. counter.Inc("go/subcommand:tool-" + toolName) - buildAndRunBuiltinTool(modload.LoaderState, ctx, toolName, tool, args[1:]) + buildAndRunBuiltinTool(moduleLoaderState, ctx, toolName, tool, args[1:]) return } // Try to build and run mod tool. - tool := loadModTool(modload.LoaderState, ctx, toolName) + tool := loadModTool(moduleLoaderState, ctx, toolName) if tool != "" { - buildAndRunModtool(modload.LoaderState, ctx, toolName, tool, args[1:]) + buildAndRunModtool(moduleLoaderState, ctx, toolName, tool, args[1:]) return }