// However, we also need to load the full module graph, to ensure that
// we have downloaded enough of the module graph to run 'go list all',
// 'go mod graph', and similar commands.
- _, err := modload.LoadModGraph(ctx, "")
+ _, err := modload.LoadModGraph(modload.LoaderState, ctx, "")
if err != nil {
// TODO(#64008): call base.Fatalf instead of toolchain.SwitchOrFatal
// here, since we can only reach this point with an outdated toolchain
// TODO(#64008): In the future, report an error if go.mod or go.sum need to
// be updated after loading the build list. This may require setting
// the mode to "mod" or "readonly" depending on haveExplicitArgs.
- if err := modload.WriteGoMod(ctx, modload.WriteOpts{}); err != nil {
+ if err := modload.WriteGoMod(modload.LoaderState, ctx, modload.WriteOpts{}); err != nil {
base.Fatal(err)
}
}
// Don't save sums for 'go mod download' without arguments unless we're in
// workspace mode; see comment above.
if haveExplicitArgs || modload.WorkFilePath(modload.LoaderState) != "" {
- if err := modload.WriteGoMod(ctx, modload.WriteOpts{}); err != nil {
+ if err := modload.WriteGoMod(modload.LoaderState, ctx, modload.WriteOpts{}); err != nil {
base.Error(err)
}
}
})
}
- mg, err := modload.LoadModGraph(ctx, goVersion)
+ mg, err := modload.LoadModGraph(modload.LoaderState, ctx, goVersion)
if err != nil {
base.Fatal(err)
}
type token struct{}
sem := make(chan token, runtime.GOMAXPROCS(0))
- mg, err := modload.LoadModGraph(ctx, "")
+ mg, err := modload.LoadModGraph(modload.LoaderState, ctx, "")
if err != nil {
base.Fatal(err)
}
// Everything succeeded. Update go.mod.
oldReqs := reqsFromGoMod(modload.ModFile())
- if err := modload.WriteGoMod(ctx, opts); err != nil {
+ if err := modload.WriteGoMod(modload.LoaderState, ctx, opts); err != nil {
// A TooNewError can happen for 'go get go@newversion'
// when all the required modules are old enough
// but the command line is not.
func newResolver(ctx context.Context, queries []*query) *resolver {
// LoadModGraph also sets modload.Target, which is needed by various resolver
// methods.
- mg, err := modload.LoadModGraph(ctx, "")
+ mg, err := modload.LoadModGraph(modload.LoaderState, ctx, "")
if err != nil {
toolchain.SwitchOrFatal(modload.LoaderState, ctx, err)
}
return false
}
- mg, err := modload.LoadModGraph(ctx, "")
+ mg, err := modload.LoadModGraph(modload.LoaderState, ctx, "")
if err != nil {
toolchain.SwitchOrFatal(modload.LoaderState, ctx, err)
}
// Modules are loaded automatically (and lazily) in LoadPackages:
// LoadModGraph need only be called if LoadPackages is not,
// typically in commands that care about modules but no particular package.
-func LoadModGraph(ctx context.Context, goVersion string) (*ModuleGraph, error) {
- rs, err := loadModFile(LoaderState, ctx, nil)
+func LoadModGraph(loaderstate *State, ctx context.Context, goVersion string) (*ModuleGraph, error) {
+ rs, err := loadModFile(loaderstate, ctx, nil)
if err != nil {
return nil, err
}
if goVersion != "" {
- v, _ := rs.rootSelected(LoaderState, "go")
+ v, _ := rs.rootSelected(loaderstate, "go")
if gover.Compare(v, gover.GoStrictVersion) >= 0 && gover.Compare(goVersion, v) < 0 {
return nil, fmt.Errorf("requested Go version %s cannot load module graph (requires Go >= %s)", goVersion, v)
}
// Use newRequirements instead of convertDepth because convertDepth
// also updates roots; here, we want to report the unmodified roots
// even though they may seem inconsistent.
- rs = newRequirements(LoaderState, unpruned, rs.rootModules, rs.direct)
+ rs = newRequirements(loaderstate, unpruned, rs.rootModules, rs.direct)
}
- return rs.Graph(LoaderState, ctx)
+ return rs.Graph(loaderstate, ctx)
}
- rs, mg, err := expandGraph(LoaderState, ctx, rs)
+ rs, mg, err := expandGraph(loaderstate, ctx, rs)
if err != nil {
return nil, err
}
- LoaderState.requirements = rs
+ loaderstate.requirements = rs
return mg, nil
}
}
// WriteGoMod writes the current build list back to go.mod.
-func WriteGoMod(ctx context.Context, opts WriteOpts) error {
- LoaderState.requirements = LoadModFile(LoaderState, ctx)
- return commitRequirements(LoaderState, ctx, opts)
+func WriteGoMod(loaderstate *State, ctx context.Context, opts WriteOpts) error {
+ loaderstate.requirements = LoadModFile(loaderstate, ctx)
+ return commitRequirements(loaderstate, ctx, opts)
}
var errNoChange = errors.New("no update needed")
base.Fatalf("go: no go.work file found\n\t(run 'go work init' first or specify path using GOWORK environment variable)")
}
- _, err := modload.LoadModGraph(ctx, "")
+ _, err := modload.LoadModGraph(modload.LoaderState, ctx, "")
if err != nil {
toolchain.SwitchOrFatal(modload.LoaderState, ctx, err)
}
SilenceMissingStdImports: true,
SilencePackageErrors: true,
}, "all")
- modload.WriteGoMod(ctx, modload.WriteOpts{})
+ modload.WriteGoMod(modload.LoaderState, ctx, modload.WriteOpts{})
}
goV = gover.Max(goV, modload.LoaderState.MainModules.GoVersion(modload.LoaderState))
}