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 {