aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/modload/edit.go
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2021-04-09 00:39:25 -0400
committerBryan C. Mills <bcmills@google.com>2021-04-09 18:49:05 +0000
commitc3faff7f2d62a81d612ed46204c2e6bd5f460f01 (patch)
treeeba8166108670fee0a77dae58b46092a19b8d301 /src/cmd/go/internal/modload/edit.go
parent814c5ff13810e800aeb67fd0371e21984d4d2c64 (diff)
downloadgo-c3faff7f2d62a81d612ed46204c2e6bd5f460f01.tar.gz
go-c3faff7f2d62a81d612ed46204c2e6bd5f460f01.zip
cmd/go/internal/modload: change mvsReqs to store roots instead of a full build list
The mvsReqs implementation has always been a bit ambivalent about whether the root requirements return the full build list, just the direct requirements, or some hybrid of the two. However, a full build list always requires the Target module as the first entry, and it's easer to remove a redundant leading element from a slice than to add one. Changing the mvsReqs field to contain arbitrary roots instead of a full build list eliminates the need to add redundant elements, at the cost of needing to remove redundant elements in more places. For #36460 Change-Id: Idd4c2d6bc7b66f67680037dab1fb9c2d1b40ab93 Reviewed-on: https://go-review.googlesource.com/c/go/+/308811 Trust: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> Reviewed-by: Michael Matloob <matloob@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com> TryBot-Result: Go Bot <gobot@golang.org>
Diffstat (limited to 'src/cmd/go/internal/modload/edit.go')
-rw-r--r--src/cmd/go/internal/modload/edit.go10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/cmd/go/internal/modload/edit.go b/src/cmd/go/internal/modload/edit.go
index 0d7811a3cd..858fec5dd5 100644
--- a/src/cmd/go/internal/modload/edit.go
+++ b/src/cmd/go/internal/modload/edit.go
@@ -49,7 +49,7 @@ func editBuildList(ctx context.Context, initial, tryUpgrade, mustSelect []module
// percieves as “downgrades” will not also result in upgrades.
max := make(map[string]string)
maxes, err := mvs.Upgrade(Target, &mvsReqs{
- buildList: append(capVersionSlice(initial), mustSelect...),
+ roots: append(capVersionSlice(initial[1:]), mustSelect...),
}, tryUpgrade...)
if err != nil {
return nil, err
@@ -108,12 +108,12 @@ func editBuildList(ctx context.Context, initial, tryUpgrade, mustSelect []module
// another. The lower version may require extraneous dependencies that aren't
// actually relevant, so we need to compute the actual selected versions.
adjusted := make([]module.Version, 0, len(maxes))
- for _, m := range maxes {
+ for _, m := range maxes[1:] {
if v, ok := limiter.selected[m.Path]; ok {
adjusted = append(adjusted, module.Version{Path: m.Path, Version: v})
}
}
- consistent, err := mvs.BuildList(Target, &mvsReqs{buildList: adjusted})
+ consistent, err := mvs.BuildList(Target, &mvsReqs{roots: adjusted})
if err != nil {
return nil, err
}
@@ -122,7 +122,7 @@ func editBuildList(ctx context.Context, initial, tryUpgrade, mustSelect []module
// the actually-selected versions in order to eliminate extraneous
// dependencies from lower-than-selected ones.
compacted := consistent[:0]
- for _, m := range consistent {
+ for _, m := range consistent[1:] {
if _, ok := limiter.selected[m.Path]; ok {
// The fact that the limiter has a version for m.Path indicates that we
// care about retaining that path, even if the version was upgraded for
@@ -131,7 +131,7 @@ func editBuildList(ctx context.Context, initial, tryUpgrade, mustSelect []module
}
}
- return mvs.BuildList(Target, &mvsReqs{buildList: compacted})
+ return mvs.BuildList(Target, &mvsReqs{roots: compacted})
}
// A versionLimiter tracks the versions that may be selected for each module