mirror of
https://github.com/golang/go
synced 2024-11-11 21:50:21 -07:00
cmd/go/internal/modload: remove the Reqs function
The Reqs function returns an mvs.Reqs implemention for the global build list. The API that it presents assumes that the build list is globally consistent (problematic for #40775) and readily available (problematic for #36460). Fortunately, it is no longer used outside of the modload package. We can instead use individual instances of the unexported mvsReqs struct, making the dependency on the global build list more explicit. For #36460 For #40775 Change-Id: I8674442f2a86416b0bf9c3395cb591c1e724c9d2 Reviewed-on: https://go-review.googlesource.com/c/go/+/272129 Trust: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
parent
3f5a97514b
commit
f93ef07b11
@ -853,7 +853,7 @@ func MinReqs() mvs.Reqs {
|
||||
retain = append(retain, m.Path)
|
||||
}
|
||||
}
|
||||
min, err := mvs.Req(Target, retain, Reqs())
|
||||
min, err := mvs.Req(Target, retain, &mvsReqs{buildList: buildList})
|
||||
if err != nil {
|
||||
base.Fatalf("go: %v", err)
|
||||
}
|
||||
@ -985,7 +985,7 @@ func keepSums(addDirect bool) map[module.Version]bool {
|
||||
keep := make(map[module.Version]bool)
|
||||
var mu sync.Mutex
|
||||
reqs := &keepSumReqs{
|
||||
Reqs: Reqs(),
|
||||
Reqs: &mvsReqs{buildList: buildList},
|
||||
visit: func(m module.Version) {
|
||||
// If we build using a replacement module, keep the sum for the replacement,
|
||||
// since that's the code we'll actually use during a build.
|
||||
|
@ -800,7 +800,7 @@ func loadFromRoots(params loaderParams) *loader {
|
||||
}
|
||||
|
||||
var err error
|
||||
reqs := Reqs()
|
||||
reqs := &mvsReqs{buildList: buildList}
|
||||
buildList, err = mvs.BuildList(Target, reqs)
|
||||
if err != nil {
|
||||
base.Fatalf("go: %v", err)
|
||||
@ -842,7 +842,7 @@ func loadFromRoots(params loaderParams) *loader {
|
||||
}
|
||||
|
||||
// Recompute buildList with all our additions.
|
||||
reqs = Reqs()
|
||||
reqs = &mvsReqs{buildList: buildList}
|
||||
buildList, err = mvs.BuildList(Target, reqs)
|
||||
if err != nil {
|
||||
// If an error was found in a newly added module, report the package
|
||||
|
@ -11,7 +11,6 @@ import (
|
||||
"sort"
|
||||
|
||||
"cmd/go/internal/modfetch"
|
||||
"cmd/go/internal/mvs"
|
||||
|
||||
"golang.org/x/mod/module"
|
||||
"golang.org/x/mod/semver"
|
||||
@ -23,16 +22,6 @@ type mvsReqs struct {
|
||||
buildList []module.Version
|
||||
}
|
||||
|
||||
// Reqs returns the current module requirement graph.
|
||||
// Future calls to EditBuildList do not affect the operation
|
||||
// of the returned Reqs.
|
||||
func Reqs() mvs.Reqs {
|
||||
r := &mvsReqs{
|
||||
buildList: buildList,
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *mvsReqs) Required(mod module.Version) ([]module.Version, error) {
|
||||
if mod == Target {
|
||||
// Use the build list as it existed when r was constructed, not the current
|
||||
|
@ -2,19 +2,17 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package modload_test
|
||||
package modload
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"cmd/go/internal/modload"
|
||||
)
|
||||
|
||||
func TestReqsMax(t *testing.T) {
|
||||
type testCase struct {
|
||||
a, b, want string
|
||||
}
|
||||
reqs := modload.Reqs()
|
||||
reqs := new(mvsReqs)
|
||||
for _, tc := range []testCase{
|
||||
{a: "v0.1.0", b: "v0.2.0", want: "v0.2.0"},
|
||||
{a: "v0.2.0", b: "v0.1.0", want: "v0.2.0"},
|
||||
@ -27,7 +25,7 @@ func TestReqsMax(t *testing.T) {
|
||||
} {
|
||||
max := reqs.Max(tc.a, tc.b)
|
||||
if max != tc.want {
|
||||
t.Errorf("Reqs().Max(%q, %q) = %q; want %q", tc.a, tc.b, max, tc.want)
|
||||
t.Errorf("(%T).Max(%q, %q) = %q; want %q", reqs, tc.a, tc.b, max, tc.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user