mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/go: eliminate additional global variable
Move global variable to a field on the State type. Change-Id: I1edd32e1d28ce814bcd75501098ee4b22227546b Reviewed-on: https://go-review.googlesource.com/c/go/+/716162 Reviewed-by: Michael Matloob <matloob@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Matloob <matloob@google.com>
This commit is contained in:
parent
f93186fb44
commit
0a95856b95
7 changed files with 47 additions and 45 deletions
|
|
@ -308,7 +308,7 @@ func runGet(ctx context.Context, cmd *base.Command, args []string) {
|
|||
|
||||
// Allow looking up modules for import paths when outside of a module.
|
||||
// 'go get' is expected to do this, unlike other commands.
|
||||
modload.AllowMissingModuleImports(moduleLoaderState)
|
||||
moduleLoaderState.AllowMissingModuleImports()
|
||||
|
||||
// 'go get' no longer builds or installs packages, so there's nothing to do
|
||||
// if there's no go.mod file.
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ type ImportMissingError struct {
|
|||
Module module.Version
|
||||
QueryErr error
|
||||
modContainingCWD module.Version
|
||||
allowMissingModuleImports bool
|
||||
|
||||
// modRoot is dependent on the value of ImportingMainModule and should be
|
||||
// kept in sync.
|
||||
|
|
@ -70,7 +71,7 @@ func (e *ImportMissingError) Error() string {
|
|||
if e.QueryErr != nil && !errors.Is(e.QueryErr, ErrNoModRoot) {
|
||||
return fmt.Sprintf("cannot find module providing package %s: %v", e.Path, e.QueryErr)
|
||||
}
|
||||
if cfg.BuildMod == "mod" || (cfg.BuildMod == "readonly" && allowMissingModuleImports) {
|
||||
if cfg.BuildMod == "mod" || (cfg.BuildMod == "readonly" && e.allowMissingModuleImports) {
|
||||
return "cannot find module providing package " + e.Path
|
||||
}
|
||||
|
||||
|
|
@ -375,6 +376,7 @@ func importFromModules(loaderstate *State, ctx context.Context, path string, rs
|
|||
return module.Version{}, "", "", nil, &ImportMissingError{
|
||||
Path: path,
|
||||
modContainingCWD: loaderstate.MainModules.ModContainingCWD(),
|
||||
allowMissingModuleImports: loaderstate.allowMissingModuleImports,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -498,6 +500,7 @@ func importFromModules(loaderstate *State, ctx context.Context, path string, rs
|
|||
QueryErr: queryErr,
|
||||
isStd: pathIsStd,
|
||||
modContainingCWD: loaderstate.MainModules.ModContainingCWD(),
|
||||
allowMissingModuleImports: loaderstate.allowMissingModuleImports,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -574,6 +577,7 @@ func queryImport(loaderstate *State, ctx context.Context, path string, rs *Requi
|
|||
Path: path,
|
||||
replaced: m,
|
||||
modContainingCWD: loaderstate.MainModules.ModContainingCWD(),
|
||||
allowMissingModuleImports: loaderstate.allowMissingModuleImports,
|
||||
}
|
||||
}
|
||||
return m, nil
|
||||
|
|
@ -604,10 +608,11 @@ func queryImport(loaderstate *State, ctx context.Context, path string, rs *Requi
|
|||
Path: path,
|
||||
isStd: true,
|
||||
modContainingCWD: loaderstate.MainModules.ModContainingCWD(),
|
||||
allowMissingModuleImports: loaderstate.allowMissingModuleImports,
|
||||
}
|
||||
}
|
||||
|
||||
if (cfg.BuildMod == "readonly" || cfg.BuildMod == "vendor") && !allowMissingModuleImports {
|
||||
if (cfg.BuildMod == "readonly" || cfg.BuildMod == "vendor") && !loaderstate.allowMissingModuleImports {
|
||||
// In readonly mode, we can't write go.mod, so we shouldn't try to look up
|
||||
// the module. If readonly mode was enabled explicitly, include that in
|
||||
// the error message.
|
||||
|
|
@ -623,6 +628,7 @@ func queryImport(loaderstate *State, ctx context.Context, path string, rs *Requi
|
|||
Path: path,
|
||||
QueryErr: queryErr,
|
||||
modContainingCWD: loaderstate.MainModules.ModContainingCWD(),
|
||||
allowMissingModuleImports: loaderstate.allowMissingModuleImports,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -645,6 +651,7 @@ func queryImport(loaderstate *State, ctx context.Context, path string, rs *Requi
|
|||
Path: path,
|
||||
QueryErr: err,
|
||||
modContainingCWD: loaderstate.MainModules.ModContainingCWD(),
|
||||
allowMissingModuleImports: loaderstate.allowMissingModuleImports,
|
||||
}
|
||||
} else {
|
||||
return module.Version{}, err
|
||||
|
|
@ -674,6 +681,7 @@ func queryImport(loaderstate *State, ctx context.Context, path string, rs *Requi
|
|||
Module: candidates[0].Mod,
|
||||
newMissingVersion: candidate0MissingVersion,
|
||||
modContainingCWD: loaderstate.MainModules.ModContainingCWD(),
|
||||
allowMissingModuleImports: loaderstate.allowMissingModuleImports,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -58,16 +58,11 @@ var importTests = []struct {
|
|||
func TestQueryImport(t *testing.T) {
|
||||
loaderstate := NewState()
|
||||
loaderstate.RootMode = NoRoot
|
||||
loaderstate.AllowMissingModuleImports()
|
||||
|
||||
testenv.MustHaveExternalNetwork(t)
|
||||
testenv.MustHaveExecPath(t, "git")
|
||||
|
||||
oldAllowMissingModuleImports := allowMissingModuleImports
|
||||
defer func() {
|
||||
allowMissingModuleImports = oldAllowMissingModuleImports
|
||||
}()
|
||||
allowMissingModuleImports = true
|
||||
|
||||
ctx := context.Background()
|
||||
rs := LoadModFile(loaderstate, ctx)
|
||||
|
||||
|
|
|
|||
|
|
@ -38,8 +38,6 @@ import (
|
|||
//
|
||||
// TODO(#40775): See if these can be plumbed as explicit parameters.
|
||||
var (
|
||||
allowMissingModuleImports bool
|
||||
|
||||
// ExplicitWriteGoMod prevents LoadPackages, ListModules, and other functions
|
||||
// from updating go.mod and go.sum or reporting errors when updates are
|
||||
// needed. A package should set this if it would cause go.mod to be written
|
||||
|
|
@ -416,6 +414,7 @@ func (s *State) setState(new State) State {
|
|||
|
||||
type State struct {
|
||||
initialized bool
|
||||
allowMissingModuleImports bool
|
||||
|
||||
// ForceUseModules may be set to force modules to be enabled when
|
||||
// GO111MODULE=auto or to report an error when GO111MODULE=off.
|
||||
|
|
@ -1292,11 +1291,11 @@ func fixVersion(loaderstate *State, ctx context.Context, fixed *bool) modfile.Ve
|
|||
//
|
||||
// This function affects the default cfg.BuildMod when outside of a module,
|
||||
// so it can only be called prior to Init.
|
||||
func AllowMissingModuleImports(loaderstate *State) {
|
||||
if loaderstate.initialized {
|
||||
func (s *State) AllowMissingModuleImports() {
|
||||
if s.initialized {
|
||||
panic("AllowMissingModuleImports after Init")
|
||||
}
|
||||
allowMissingModuleImports = true
|
||||
s.allowMissingModuleImports = true
|
||||
}
|
||||
|
||||
// makeMainModules creates a MainModuleSet and associated variables according to
|
||||
|
|
@ -1553,7 +1552,7 @@ func setDefaultBuildMod(loaderstate *State) {
|
|||
return
|
||||
}
|
||||
if loaderstate.modRoots == nil {
|
||||
if allowMissingModuleImports {
|
||||
if loaderstate.allowMissingModuleImports {
|
||||
cfg.BuildMod = "mod"
|
||||
} else {
|
||||
cfg.BuildMod = "readonly"
|
||||
|
|
|
|||
|
|
@ -1184,7 +1184,7 @@ func loadFromRoots(loaderstate *State, ctx context.Context, params loaderParams)
|
|||
continue
|
||||
}
|
||||
|
||||
if !ld.ResolveMissingImports || (!HasModRoot(loaderstate) && !allowMissingModuleImports) {
|
||||
if !ld.ResolveMissingImports || (!HasModRoot(loaderstate) && !loaderstate.allowMissingModuleImports) {
|
||||
// We've loaded as much as we can without resolving missing imports.
|
||||
break
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ func runRun(ctx context.Context, cmd *base.Command, args []string) {
|
|||
// for -race and -msan.
|
||||
moduleLoaderState.ForceUseModules = true
|
||||
moduleLoaderState.RootMode = modload.NoRoot
|
||||
modload.AllowMissingModuleImports(moduleLoaderState)
|
||||
moduleLoaderState.AllowMissingModuleImports()
|
||||
modload.Init(moduleLoaderState)
|
||||
} else {
|
||||
modload.InitWorkfile(moduleLoaderState)
|
||||
|
|
|
|||
|
|
@ -863,7 +863,7 @@ func InstallPackages(loaderstate *modload.State, ctx context.Context, patterns [
|
|||
func installOutsideModule(loaderstate *modload.State, ctx context.Context, args []string) {
|
||||
loaderstate.ForceUseModules = true
|
||||
loaderstate.RootMode = modload.NoRoot
|
||||
modload.AllowMissingModuleImports(loaderstate)
|
||||
loaderstate.AllowMissingModuleImports()
|
||||
modload.Init(loaderstate)
|
||||
BuildInit(loaderstate)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue