diff options
author | Roland Shoemaker <roland@golang.org> | 2021-03-12 09:51:50 -0800 |
---|---|---|
committer | Roland Shoemaker <roland@golang.org> | 2021-03-12 19:10:07 +0000 |
commit | cdd08e615a9b92742b21a94443720b6d70452510 (patch) | |
tree | 35c80c035d44698c2bebecc129636ed135c3a664 /src/cmd/go/internal/load/pkg.go | |
parent | 4662029264e79f144eef4323631b3356624e884f (diff) | |
download | go-cdd08e615a9b92742b21a94443720b6d70452510.tar.gz go-cdd08e615a9b92742b21a94443720b6d70452510.zip |
cmd/go/internal/load: always set IsImportCycle when in a cycle
When hitting an import cycle in reusePackage, and there is already
an error set, make sure IsImportCycle is set so that we don't
end up stuck in a loop.
Fixes #25830
Change-Id: Iba966aea4a637dfc34ee22782a477209ac48c9bd
Reviewed-on: https://go-review.googlesource.com/c/go/+/301289
Trust: Roland Shoemaker <roland@golang.org>
Run-TryBot: Roland Shoemaker <roland@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Jay Conrod <jayconrod@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Diffstat (limited to 'src/cmd/go/internal/load/pkg.go')
-rw-r--r-- | src/cmd/go/internal/load/pkg.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index 8b12faf4cd..61fde895f8 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -1323,6 +1323,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 } |