aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/modload/load.go
diff options
context:
space:
mode:
authorJay Conrod <jayconrod@google.com>2019-03-05 14:53:03 -0500
committerJay Conrod <jayconrod@google.com>2019-03-15 21:45:04 +0000
commit356f5a117641711e8ef6df731dfeefefbe2fe3e3 (patch)
treeeab83205465016bdff73268e6f09ba3275f328f6 /src/cmd/go/internal/modload/load.go
parent37e4a61d26d3b10aa11c5155b72c6bc882bd3122 (diff)
downloadgo-356f5a117641711e8ef6df731dfeefefbe2fe3e3.tar.gz
go-356f5a117641711e8ef6df731dfeefefbe2fe3e3.zip
cmd/go: list directories in module cache replacements
"go list" has allowed listing directory paths to packages in the module cache since CL 126715. This is sometimes necessary for tools gathering package information about source files in imported packages. With this change, we only allow directories in the module cache for modules in the build list after replacements are applied. Previously, we ignored replacements when expanding file system path patterns while constructing the build list. Fixes #29548 Change-Id: Ic7f89122c4656c8967c14545cb7117f98e89e721 Reviewed-on: https://go-review.googlesource.com/c/go/+/165381 Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
Diffstat (limited to 'src/cmd/go/internal/modload/load.go')
-rw-r--r--src/cmd/go/internal/modload/load.go13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go
index 33b53052d8..71b7308c0d 100644
--- a/src/cmd/go/internal/modload/load.go
+++ b/src/cmd/go/internal/modload/load.go
@@ -212,7 +212,18 @@ func ImportPaths(patterns []string) []*search.Match {
// if dir is in the module cache copy of a module in our build list.
func pathInModuleCache(dir string) string {
for _, m := range buildList[1:] {
- root, err := modfetch.DownloadDir(m)
+ var root string
+ var err error
+ if repl := Replacement(m); repl.Path != "" && repl.Version == "" {
+ root = repl.Path
+ if !filepath.IsAbs(root) {
+ root = filepath.Join(ModRoot(), root)
+ }
+ } else if repl.Path != "" {
+ root, err = modfetch.DownloadDir(repl)
+ } else {
+ root, err = modfetch.DownloadDir(m)
+ }
if err != nil {
continue
}