}
func runRun(ctx context.Context, cmd *base.Command, args []string) {
+ moduleLoaderState := modload.NewState()
if shouldUseOutsideModuleMode(args) {
// Set global module flags for 'go run cmd@version'.
// This must be done before modload.Init, but we need to call work.BuildInit
// before loading packages, since it affects package locations, e.g.,
// for -race and -msan.
- modload.LoaderState.ForceUseModules = true
- modload.LoaderState.RootMode = modload.NoRoot
- modload.AllowMissingModuleImports(modload.LoaderState)
- modload.Init(modload.LoaderState)
+ moduleLoaderState.ForceUseModules = true
+ moduleLoaderState.RootMode = modload.NoRoot
+ modload.AllowMissingModuleImports(moduleLoaderState)
+ modload.Init(moduleLoaderState)
} else {
- modload.InitWorkfile(modload.LoaderState)
+ modload.InitWorkfile(moduleLoaderState)
}
- work.BuildInit(modload.LoaderState)
- b := work.NewBuilder("", modload.LoaderState.VendorDirOrEmpty)
+ work.BuildInit(moduleLoaderState)
+ b := work.NewBuilder("", moduleLoaderState.VendorDirOrEmpty)
defer func() {
if err := b.Close(); err != nil {
base.Fatal(err)
base.Fatalf("go: cannot run *_test.go files (%s)", file)
}
}
- p = load.GoFilesPackage(modload.LoaderState, ctx, pkgOpts, files)
+ p = load.GoFilesPackage(moduleLoaderState, ctx, pkgOpts, files)
} else if len(args) > 0 && !strings.HasPrefix(args[0], "-") {
arg := args[0]
var pkgs []*load.Package
if strings.Contains(arg, "@") && !build.IsLocalImport(arg) && !filepath.IsAbs(arg) {
var err error
- pkgs, err = load.PackagesAndErrorsOutsideModule(modload.LoaderState, ctx, pkgOpts, args[:1])
+ pkgs, err = load.PackagesAndErrorsOutsideModule(moduleLoaderState, ctx, pkgOpts, args[:1])
if err != nil {
base.Fatal(err)
}
} else {
- pkgs = load.PackagesAndErrors(modload.LoaderState, ctx, pkgOpts, args[:1])
+ pkgs = load.PackagesAndErrors(moduleLoaderState, ctx, pkgOpts, args[:1])
}
if len(pkgs) == 0 {
load.CheckPackageErrors([]*load.Package{p})
if cfg.BuildCover {
- load.PrepareForCoverageBuild(modload.LoaderState, []*load.Package{p})
+ load.PrepareForCoverageBuild(moduleLoaderState, []*load.Package{p})
}
p.Internal.OmitDebug = true
p.Internal.ExeName = p.DefaultExecName()
}
- a1 := b.LinkAction(modload.LoaderState, work.ModeBuild, work.ModeBuild, p)
+ a1 := b.LinkAction(moduleLoaderState, work.ModeBuild, work.ModeBuild, p)
a1.CacheExecutable = true
a := &work.Action{Mode: "go run", Actor: work.ActorFunc(buildRunProgram), Args: cmdArgs, Deps: []*work.Action{a1}}
b.Do(ctx, a)