diff options
author | Filippo Valsorda <filippo@golang.org> | 2021-08-09 12:37:04 -0400 |
---|---|---|
committer | Filippo Valsorda <filippo@golang.org> | 2021-08-09 12:37:04 -0400 |
commit | dd96ded6c86b8a38f49fa087b758455243a0f08c (patch) | |
tree | f1a70c0194af60202025ad135d1ee903e20896c3 /src/cmd/go | |
parent | ddf078e08dc61f38e26f9969dd2a2151a8c73904 (diff) | |
parent | acbe242f8a2cae8ef4749806291a37d23089b572 (diff) | |
download | go-dd96ded6c86b8a38f49fa087b758455243a0f08c.tar.gz go-dd96ded6c86b8a38f49fa087b758455243a0f08c.zip |
[dev.boringcrypto.go1.15] all: merge go1.15.15 into dev.boringcrypto.go1.15dev.boringcrypto.go1.15
Change-Id: I3b20c90322a0c0deec68a161b8fcbab9188fb6b2
Diffstat (limited to 'src/cmd/go')
-rw-r--r-- | src/cmd/go/internal/load/pkg.go | 5 | ||||
-rw-r--r-- | src/cmd/go/internal/modcmd/vendor.go | 3 | ||||
-rw-r--r-- | src/cmd/go/testdata/script/list_err_cycle.txt | 15 |
3 files changed, 22 insertions, 1 deletions
diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index ddbb3b9be0..3300ea7775 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -1286,6 +1286,11 @@ func reusePackage(p *Package, stk *ImportStack) *Package { Err: errors.New("import cycle not allowed"), IsImportCycle: true, } + } else if !p.Error.IsImportCycle { + // If the error is already set, but it does not indicate that + // we are in an import cycle, set IsImportCycle so that we don't + // end up stuck in a loop down the road. + p.Error.IsImportCycle = true } p.Incomplete = true } diff --git a/src/cmd/go/internal/modcmd/vendor.go b/src/cmd/go/internal/modcmd/vendor.go index 5a5bb943a5..d83b3de3e5 100644 --- a/src/cmd/go/internal/modcmd/vendor.go +++ b/src/cmd/go/internal/modcmd/vendor.go @@ -10,6 +10,7 @@ import ( "io" "io/ioutil" "os" + "path" "path/filepath" "sort" "strings" @@ -192,7 +193,7 @@ func copyMetadata(modPath, pkg, dst, src string) { if modPath == pkg { break } - pkg = filepath.Dir(pkg) + pkg = path.Dir(pkg) dst = filepath.Dir(dst) src = filepath.Dir(src) } diff --git a/src/cmd/go/testdata/script/list_err_cycle.txt b/src/cmd/go/testdata/script/list_err_cycle.txt new file mode 100644 index 0000000000..44b82a62b0 --- /dev/null +++ b/src/cmd/go/testdata/script/list_err_cycle.txt @@ -0,0 +1,15 @@ +# Check that we don't get infinite recursion when loading a package with +# an import cycle and another error. Verifies #25830. +! go list +stderr 'found packages a \(a.go\) and b \(b.go\)' + +-- go.mod -- +module errcycle + +go 1.16 +-- a.go -- +package a + +import _ "errcycle" +-- b.go -- +package b
\ No newline at end of file |