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 {