diff --git a/src/cmd/go/internal/bug/bug.go b/src/cmd/go/internal/bug/bug.go index 4e9ae1e9b49..ccd8dee95e6 100644 --- a/src/cmd/go/internal/bug/bug.go +++ b/src/cmd/go/internal/bug/bug.go @@ -51,7 +51,7 @@ func runBug(ctx context.Context, cmd *base.Command, args []string) { buf.WriteString(bugHeader) printGoVersion(&buf) buf.WriteString("### Does this issue reproduce with the latest release?\n\n\n") - printEnvDetails(&buf) + printEnvDetails(modload.LoaderState, &buf) buf.WriteString(bugFooter) body := buf.String() @@ -92,20 +92,20 @@ func printGoVersion(w io.Writer) { fmt.Fprintf(w, "\n") } -func printEnvDetails(w io.Writer) { +func printEnvDetails(loaderstate *modload.State, w io.Writer) { fmt.Fprintf(w, "### What operating system and processor architecture are you using (`go env`)?\n\n") fmt.Fprintf(w, "
go env Output
\n")
 	fmt.Fprintf(w, "$ go env\n")
-	printGoEnv(w)
+	printGoEnv(loaderstate, w)
 	printGoDetails(w)
 	printOSDetails(w)
 	printCDetails(w)
 	fmt.Fprintf(w, "
\n\n") } -func printGoEnv(w io.Writer) { +func printGoEnv(loaderstate *modload.State, w io.Writer) { env := envcmd.MkEnv() - env = append(env, envcmd.ExtraEnvVars()...) + env = append(env, envcmd.ExtraEnvVars(loaderstate)...) env = append(env, envcmd.ExtraEnvVarsCostly()...) envcmd.PrintEnv(w, env, false) } diff --git a/src/cmd/go/internal/envcmd/env.go b/src/cmd/go/internal/envcmd/env.go index 13708ae170c..517722a4265 100644 --- a/src/cmd/go/internal/envcmd/env.go +++ b/src/cmd/go/internal/envcmd/env.go @@ -189,16 +189,16 @@ func findEnv(env []cfg.EnvVar, name string) string { } // ExtraEnvVars returns environment variables that should not leak into child processes. -func ExtraEnvVars() []cfg.EnvVar { +func ExtraEnvVars(loaderstate *modload.State) []cfg.EnvVar { gomod := "" - modload.Init(modload.LoaderState) - if modload.HasModRoot(modload.LoaderState) { - gomod = modload.ModFilePath() - } else if modload.Enabled(modload.LoaderState) { + modload.Init(loaderstate) + if modload.HasModRoot(loaderstate) { + gomod = modload.ModFilePath(loaderstate) + } else if modload.Enabled(loaderstate) { gomod = os.DevNull } - modload.InitWorkfile(modload.LoaderState) - gowork := modload.WorkFilePath(modload.LoaderState) + modload.InitWorkfile(loaderstate) + gowork := modload.WorkFilePath(loaderstate) // As a special case, if a user set off explicitly, report that in GOWORK. if cfg.Getenv("GOWORK") == "off" { gowork = "off" @@ -306,7 +306,7 @@ func runEnv(ctx context.Context, cmd *base.Command, args []string) { } env := cfg.CmdEnv - env = append(env, ExtraEnvVars()...) + env = append(env, ExtraEnvVars(modload.LoaderState)...) if err := fsys.Init(); err != nil { base.Fatal(err) diff --git a/src/cmd/go/internal/modcmd/edit.go b/src/cmd/go/internal/modcmd/edit.go index 041b4432bfd..d5774e98d76 100644 --- a/src/cmd/go/internal/modcmd/edit.go +++ b/src/cmd/go/internal/modcmd/edit.go @@ -232,7 +232,7 @@ func runEdit(ctx context.Context, cmd *base.Command, args []string) { if len(args) == 1 { gomod = args[0] } else { - gomod = modload.ModFilePath() + gomod = modload.ModFilePath(modload.LoaderState) } if *editModule != "" { diff --git a/src/cmd/go/internal/modget/get.go b/src/cmd/go/internal/modget/get.go index 141e1708fa6..b26406ee1d0 100644 --- a/src/cmd/go/internal/modget/get.go +++ b/src/cmd/go/internal/modget/get.go @@ -768,7 +768,7 @@ func (r *resolver) performLocalQueries(ctx context.Context) { // restricted to matching packages in the main module. pkgPattern, mainModule := modload.LoaderState.MainModules.DirImportPath(modload.LoaderState, ctx, q.pattern) if pkgPattern == "." { - modload.MustHaveModRoot() + modload.MustHaveModRoot(modload.LoaderState) versions := modload.LoaderState.MainModules.Versions() modRoots := make([]string, 0, len(versions)) for _, m := range versions { @@ -791,7 +791,7 @@ func (r *resolver) performLocalQueries(ctx context.Context) { return errSet(fmt.Errorf("no package to get in current directory")) } if !q.isWildcard() { - modload.MustHaveModRoot() + modload.MustHaveModRoot(modload.LoaderState) return errSet(fmt.Errorf("%s%s is not a package in module rooted at %s", q.pattern, absDetail, modload.LoaderState.MainModules.ModRoot(mainModule))) } search.WarnUnmatched([]*search.Match{match}) diff --git a/src/cmd/go/internal/modload/init.go b/src/cmd/go/internal/modload/init.go index 20751528862..383ea20e3e6 100644 --- a/src/cmd/go/internal/modload/init.go +++ b/src/cmd/go/internal/modload/init.go @@ -661,18 +661,18 @@ func HasModRoot(loaderstate *State) bool { // MustHaveModRoot checks that a main module or main modules are present, // and calls base.Fatalf if there are no main modules. -func MustHaveModRoot() { - Init(LoaderState) - if !HasModRoot(LoaderState) { - die(LoaderState) +func MustHaveModRoot(loaderstate *State) { + Init(loaderstate) + if !HasModRoot(loaderstate) { + die(loaderstate) } } // ModFilePath returns the path that would be used for the go.mod // file, if in module mode. ModFilePath calls base.Fatalf if there is no main // module, even if -modfile is set. -func ModFilePath() string { - MustHaveModRoot() +func ModFilePath(loaderstate *State) string { + MustHaveModRoot(loaderstate) return modFilePath(findModuleRoot(base.Cwd())) }