From: Bryan C. Mills Date: Thu, 29 Oct 2020 20:36:50 +0000 (-0400) Subject: cmd/go/internal/modload: handle NotExist errors in (*mvsReqs).Previous X-Git-Tag: go1.16beta1~387 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=6d087c807e558a7e4f7da29fd44998e6f605c27d;p=gostls13.git cmd/go/internal/modload: handle NotExist errors in (*mvsReqs).Previous Previous is used during downgrading. If the module proxy does not advertise any versions (for example, because it contains only pseudo-versions), then Previous should return "none" instead of a non-nil error. For #37438 Change-Id: I4edfec19cfeb3ffe50df4979f99a01321c442509 Reviewed-on: https://go-review.googlesource.com/c/go/+/266370 Trust: Bryan C. Mills Run-TryBot: Bryan C. Mills Reviewed-by: Jay Conrod Reviewed-by: Michael Matloob TryBot-Result: Go Bot --- diff --git a/src/cmd/go/internal/modload/mvs.go b/src/cmd/go/internal/modload/mvs.go index 79ef2475b6..94373bc5f3 100644 --- a/src/cmd/go/internal/modload/mvs.go +++ b/src/cmd/go/internal/modload/mvs.go @@ -7,6 +7,7 @@ package modload import ( "context" "errors" + "os" "sort" "cmd/go/internal/modfetch" @@ -102,6 +103,9 @@ func (*mvsReqs) Previous(m module.Version) (module.Version, error) { // TODO(golang.org/issue/38714): thread tracing context through MVS. list, err := versions(context.TODO(), m.Path, CheckAllowed) if err != nil { + if errors.Is(err, os.ErrNotExist) { + return module.Version{Path: m.Path, Version: "none"}, nil + } return module.Version{}, err } i := sort.Search(len(list), func(i int) bool { return semver.Compare(list[i], m.Version) >= 0 })