mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
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>
This commit is contained in:
parent
4662029264
commit
cdd08e615a
2 changed files with 20 additions and 0 deletions
|
|
@ -1323,6 +1323,11 @@ func reusePackage(p *Package, stk *ImportStack) *Package {
|
||||||
Err: errors.New("import cycle not allowed"),
|
Err: errors.New("import cycle not allowed"),
|
||||||
IsImportCycle: true,
|
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
|
p.Incomplete = true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
15
src/cmd/go/testdata/script/list_err_cycle.txt
vendored
Normal file
15
src/cmd/go/testdata/script/list_err_cycle.txt
vendored
Normal file
|
|
@ -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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue