Closed
Description
Type-checking such code:
package p
const (
B = A + B
A = A + B
)
leads to non-deterministic errors, either:
initialization_cycle.go:4:2: no error expected: "initialization cycle for B"
initialization_cycle.go:5:2: no error expected: "initialization cycle: A refers to itself"
initialization_cycle.go:4:2: no error expected: "initialization cycle for B"
initialization_cycle.go:5:2: no error expected: "initialization cycle: A refers to itself"
or
initialization_cycle.go:4:2: no error expected: "initialization cycle for B"
initialization_cycle.go:5:2: no error expected: "initialization cycle: A refers to itself"
initialization_cycle.go:4:2: no error expected: "initialization cycle for B"
initialization_cycle.go:5:2: no error expected: "initialization cycle for A"
or
initialization_cycle.go:4:2: no error expected: "initialization cycle for B"
initialization_cycle.go:5:2: no error expected: "initialization cycle: A refers to itself"
initialization_cycle.go:4:2: no error expected: "initialization cycle: B refers to itself"
initialization_cycle.go:5:2: no error expected: "initialization cycle: A refers to itself"
It would be nice if go/types
always returned the same error for the same input. I am not sure whether this is something that go/types
should guarantee, feel free to close this issue, if that is fine.