From 386d81151d6f297cec757e2ad6d89f146759703a Mon Sep 17 00:00:00 2001 From: Ian Alexander Date: Thu, 16 Oct 2025 18:06:27 -0400 Subject: [PATCH] cmd/go: make setState work with any State instance This commit updates the setState function to work with any state object in preparation for converting it to a method. This commit is part of the overall effort to eliminate global modloader state. Change-Id: I6d485156e7c4c83ff608f941b68e6d928418bd8f Reviewed-on: https://go-review.googlesource.com/c/go/+/712700 Reviewed-by: Michael Matloob Reviewed-by: Michael Matloob LUCI-TryBot-Result: Go LUCI --- src/cmd/go/internal/modload/init.go | 40 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/cmd/go/internal/modload/init.go b/src/cmd/go/internal/modload/init.go index 383ea20e3e..34af9796e5 100644 --- a/src/cmd/go/internal/modload/init.go +++ b/src/cmd/go/internal/modload/init.go @@ -81,7 +81,7 @@ func EnterWorkspace(ctx context.Context) (exit func(), err error) { } // Reset the state to a clean state. - oldstate := setState(State{}) + oldstate := setState(LoaderState, State{}) LoaderState.ForceUseModules = true // Load in workspace mode. @@ -93,7 +93,7 @@ func EnterWorkspace(ctx context.Context) (exit func(), err error) { LoaderState.requirements = requirementsFromModFiles(LoaderState, ctx, LoaderState.MainModules.workFile, slices.Collect(maps.Values(LoaderState.MainModules.modFiles)), nil) return func() { - setState(oldstate) + setState(LoaderState, oldstate) }, nil } @@ -378,31 +378,31 @@ func WorkFilePath(loaderstate *State) string { // Reset clears all the initialized, cached state about the use of modules, // so that we can start over. func Reset() { - setState(State{}) + setState(LoaderState, State{}) } -func setState(s State) State { +func setState(s *State, new State) State { oldState := State{ - initialized: LoaderState.initialized, - ForceUseModules: LoaderState.ForceUseModules, - RootMode: LoaderState.RootMode, - modRoots: LoaderState.modRoots, + initialized: s.initialized, + ForceUseModules: s.ForceUseModules, + RootMode: s.RootMode, + modRoots: s.modRoots, modulesEnabled: cfg.ModulesEnabled, - MainModules: LoaderState.MainModules, - requirements: LoaderState.requirements, - } - LoaderState.initialized = s.initialized - LoaderState.ForceUseModules = s.ForceUseModules - LoaderState.RootMode = s.RootMode - LoaderState.modRoots = s.modRoots - cfg.ModulesEnabled = s.modulesEnabled - LoaderState.MainModules = s.MainModules - LoaderState.requirements = s.requirements - LoaderState.workFilePath = s.workFilePath + MainModules: s.MainModules, + requirements: s.requirements, + } + s.initialized = new.initialized + s.ForceUseModules = new.ForceUseModules + s.RootMode = new.RootMode + s.modRoots = new.modRoots + cfg.ModulesEnabled = new.modulesEnabled + s.MainModules = new.MainModules + s.requirements = new.requirements + s.workFilePath = new.workFilePath // The modfetch package's global state is used to compute // the go.sum file, so save and restore it along with the // modload state. - oldState.modfetchState = modfetch.SetState(s.modfetchState) + oldState.modfetchState = modfetch.SetState(new.modfetchState) return oldState } -- 2.52.0