mirror of
https://github.com/golang/go.git
synced 2025-11-10 21:51:05 +00:00
cmd/compile: fix package initialization ordering
This CL rewrites cmd/compile's package-level initialization ordering algorithm to be compliant with the Go spec. See documentation in initorder.go for details. Incidentally, this CL also improves fidelity of initialization loop diagnostics by including referenced functions in the emitted output like go/types does. Fixes #22326. Change-Id: I7c9ac47ff563df4d4f700cf6195387a0f372cc7b Reviewed-on: https://go-review.googlesource.com/c/go/+/170062 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
parent
e883d000f4
commit
5d0d87ae16
6 changed files with 439 additions and 238 deletions
|
|
@ -31,7 +31,7 @@ func renameinit() *types.Sym {
|
|||
// 2) Initialize all the variables that have initializers.
|
||||
// 3) Run any init functions.
|
||||
func fninit(n []*Node) {
|
||||
nf := initfix(n)
|
||||
nf := initOrder(n)
|
||||
|
||||
var deps []*obj.LSym // initTask records for packages the current package depends on
|
||||
var fns []*obj.LSym // functions to call for package initialization
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue