cmd/go/internal/vgo: fix versions in local go.mod
diff --git a/vendor/cmd/go/internal/vgo/build.go b/vendor/cmd/go/internal/vgo/build.go
index ceb57a1..d548f22 100644
--- a/vendor/cmd/go/internal/vgo/build.go
+++ b/vendor/cmd/go/internal/vgo/build.go
@@ -21,7 +21,7 @@
func PackageModuleInfo(path string) modinfo.ModulePublic {
var info modinfo.ModulePublic
- if search.IsStandardImportPath(path) {
+ if search.IsStandardImportPath(path) || !Enabled() {
return info
}
target := findModule(path, path)
diff --git a/vendor/cmd/go/internal/vgo/init.go b/vendor/cmd/go/internal/vgo/init.go
index ef8b19a..cb64ae1 100644
--- a/vendor/cmd/go/internal/vgo/init.go
+++ b/vendor/cmd/go/internal/vgo/init.go
@@ -120,7 +120,7 @@
return
}
- f, err := modfile.Parse(gomod, data)
+ f, err := modfile.Parse(gomod, data, fixVersion)
if err != nil {
// Errors returned by modfile.Parse begin with file:line.
base.Fatalf("vgo: errors parsing go.mod:\n%s\n", err)
@@ -336,3 +336,11 @@
base.Fatalf("vgo: %v", err)
}
}
+
+func fixVersion(path, vers string) (string, error) {
+ info, err := modfetch.Query(path, vers, nil)
+ if err != nil {
+ return "", err
+ }
+ return info.Version, nil
+}
diff --git a/vendor/cmd/go/internal/vgo/load.go b/vendor/cmd/go/internal/vgo/load.go
index 548f0ed..0dce36a 100644
--- a/vendor/cmd/go/internal/vgo/load.go
+++ b/vendor/cmd/go/internal/vgo/load.go
@@ -73,6 +73,11 @@
}
func importPaths(args []string) []string {
+ level := levelBuild
+ switch cfg.CmdName {
+ case "test", "vet":
+ level = levelTest
+ }
cleaned := search.CleanImportPaths(args)
iterate(func(ld *loader) {
args = expandImportPaths(cleaned)
@@ -89,7 +94,7 @@
}
args[i] = pkg
}
- ld.importPkg(pkg, levelBuild)
+ ld.importPkg(pkg, level)
}
})
return args
@@ -190,7 +195,7 @@
defer func() {
ld.stack = ld.stack[:len(ld.stack)-1]
}()
-
+
// Any rewritings go here.
realPath := path
@@ -298,7 +303,7 @@
}
}
fmt.Fprintf(os.Stderr, "vgo: resolving import %q\n", m.path)
- repo, err := modfetch.Lookup(m.path)
+ repo, info, err := modfetch.Import(m.path, allowed)
if err != nil {
base.Errorf("vgo: %s: %v", m.stack, err)
return
@@ -309,11 +314,6 @@
base.Fatalf("internal error: findmissing loop on %s", root)
}
found[root] = true
- info, err := modfetch.Query(root, "latest", allowed)
- if err != nil {
- base.Errorf("vgo: %s: %v", m.stack, err)
- return
- }
fmt.Fprintf(os.Stderr, "vgo: adding %s %s\n", root, info.Version)
buildList = append(buildList, module.Version{root, info.Version})
modFile.AddRequire(root, info.Version)
@@ -386,7 +386,7 @@
if err != nil {
return nil, err
}
- f, err := modfile.Parse(gomod, data)
+ f, err := modfile.Parse(gomod, data, nil)
if err != nil {
return nil, err
}
@@ -420,7 +420,7 @@
// We ignore cached go.mod files if they do not match
// our own vgoVersion.
if !bytes.HasPrefix(data, vgoVersion[:len("//vgo")]) || bytes.HasPrefix(data, vgoVersion) {
- f, err := modfile.Parse(gomod, data)
+ f, err := modfile.Parse(gomod, data, nil)
if err != nil {
return nil, err
}
@@ -430,7 +430,7 @@
}
return list, nil
}
- f, err = modfile.Parse("go.mod", data)
+ f, err = modfile.Parse("go.mod", data, nil)
if err != nil {
return nil, fmt.Errorf("parsing downloaded go.mod: %v", err)
}
@@ -454,13 +454,10 @@
return nil, err
}
- f, err = modfile.Parse("go.mod", data)
+ f, err = modfile.Parse("go.mod", data, nil)
if err != nil {
return nil, fmt.Errorf("parsing downloaded go.mod: %v", err)
}
- if mpath := f.Module.Mod.Path; mpath != origPath && mpath != mod.Path {
- return nil, fmt.Errorf("downloaded %q and got module %q", mod.Path, mpath)
- }
dir := filepath.Dir(gomod)
if err := os.MkdirAll(dir, 0777); err != nil {
@@ -477,6 +474,9 @@
return nil, fmt.Errorf("caching go.mod: %v", err)
}
}
+ if mpath := f.Module.Mod.Path; mpath != origPath && mpath != mod.Path {
+ return nil, fmt.Errorf("downloaded %q and got module %q", mod.Path, mpath)
+ }
var list []module.Version
for _, req := range f.Require {