mirror of
https://github.com/golang/go
synced 2024-11-22 03:34:40 -07:00
cmd/compile: use "init... cycle" instead of "init... loop" in error messages
For #55326. Change-Id: Ia3c1124305986dcd49ac769e700055b263cfbd59 Reviewed-on: https://go-review.googlesource.com/c/go/+/432615 Reviewed-by: Robert Findley <rfindley@google.com> Auto-Submit: Robert Griesemer <gri@google.com> Run-TryBot: Robert Griesemer <gri@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@google.com>
This commit is contained in:
parent
5d213a3dc7
commit
c58bfeeb04
@ -153,11 +153,7 @@ func findPath(objMap map[Object]*declInfo, from, to Object, seen map[Object]bool
|
||||
func (check *Checker) reportCycle(cycle []Object) {
|
||||
obj := cycle[0]
|
||||
var err error_
|
||||
if check.conf.CompilerErrorMessages {
|
||||
err.errorf(obj, "initialization loop for %s", obj.Name())
|
||||
} else {
|
||||
err.errorf(obj, "initialization cycle for %s", obj.Name())
|
||||
}
|
||||
err.errorf(obj, "initialization cycle for %s", obj.Name())
|
||||
// subtle loop: print cycle[i] for i = 0, n-1, n-2, ... 1 for len(cycle) = n
|
||||
for i := len(cycle) - 1; i >= 0; i-- {
|
||||
err.errorf(obj, "%s refers to", obj.Name())
|
||||
|
@ -7,7 +7,7 @@
|
||||
package main
|
||||
|
||||
var (
|
||||
a, b = f() // ERROR "initialization loop|depends upon itself|depend upon each other"
|
||||
a, b = f() // ERROR "initialization cycle|depends upon itself|depend upon each other"
|
||||
c = b // GCCGO_ERROR "depends upon itself|depend upon each other"
|
||||
)
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// check that initialization loop is diagnosed
|
||||
// check that initialization cycle is diagnosed
|
||||
// and that closure cannot be used to hide it.
|
||||
// error message is not standard format, so no errchk above.
|
||||
|
||||
@ -18,4 +18,4 @@ func f() {
|
||||
}
|
||||
}
|
||||
|
||||
var m = map[string]F{"f": f} // ERROR "initialization loop|depends upon itself|initialization cycle"
|
||||
var m = map[string]F{"f": f} // ERROR "initialization cycle|depends upon itself|initialization cycle"
|
||||
|
@ -8,4 +8,4 @@ package p
|
||||
|
||||
func f(i int) int { return i }
|
||||
|
||||
var i = func() int {a := f(i); return a}() // ERROR "initialization loop|depends upon itself"
|
||||
var i = func() int {a := f(i); return a}() // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -4,12 +4,12 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Issue 3890: missing detection of init loop involving
|
||||
// Issue 3890: missing detection of init cycle involving
|
||||
// method calls in function bodies.
|
||||
|
||||
package flag
|
||||
|
||||
var commandLine = NewFlagSet() // ERROR "loop|depends upon itself"
|
||||
var commandLine = NewFlagSet() // ERROR "initialization cycle|depends upon itself"
|
||||
|
||||
type FlagSet struct {
|
||||
}
|
||||
|
@ -9,11 +9,11 @@
|
||||
|
||||
package main
|
||||
|
||||
const a = a // ERROR "refers to itself|definition loop|initialization loop"
|
||||
const a = a // ERROR "refers to itself|definition loop|initialization cycle"
|
||||
|
||||
const (
|
||||
X = A
|
||||
A = B // ERROR "refers to itself|definition loop|initialization loop"
|
||||
A = B // ERROR "refers to itself|definition loop|initialization cycle"
|
||||
B = D
|
||||
C, D = 1, A
|
||||
)
|
||||
|
@ -6,4 +6,4 @@
|
||||
|
||||
package p
|
||||
|
||||
var f = func() { f() } // ERROR "initialization loop|initialization expression for .*f.* depends upon itself"
|
||||
var f = func() { f() } // ERROR "initialization cycle|initialization expression for .*f.* depends upon itself"
|
||||
|
@ -8,4 +8,4 @@
|
||||
|
||||
package p
|
||||
|
||||
var a [len(a)]int // ERROR "\[len\(a\)\]int|initialization loop"
|
||||
var a [len(a)]int // ERROR "\[len\(a\)\]int|initialization cycle"
|
||||
|
@ -4,7 +4,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Issue 4847: initialization loop is not detected.
|
||||
// Issue 4847: initialization cycle is not detected.
|
||||
|
||||
package p
|
||||
|
||||
@ -19,6 +19,6 @@ func matchList(s *S) E { return matcher(matchAnyFn)(s) }
|
||||
|
||||
var foo = matcher(matchList)
|
||||
|
||||
var matchAny = matcher(matchList) // ERROR "initialization loop|depends upon itself"
|
||||
var matchAny = matcher(matchList) // ERROR "initialization cycle|depends upon itself"
|
||||
|
||||
func matchAnyFn(s *S) (err E) { return matchAny(s) }
|
||||
|
@ -10,4 +10,4 @@ import "unsafe"
|
||||
|
||||
type S[T any] struct{}
|
||||
|
||||
const c = unsafe.Sizeof(S[[c]byte]{}) // ERROR "initialization loop"
|
||||
const c = unsafe.Sizeof(S[[c]byte]{}) // ERROR "initialization cycle"
|
||||
|
@ -13,4 +13,4 @@ func fx() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
var x = fx // ERROR "initialization loop|depends upon itself"
|
||||
var x = fx // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -13,4 +13,4 @@ func fx() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
var x = fx() // ERROR "initialization loop|depends upon itself"
|
||||
var x = fx() // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -15,4 +15,4 @@ func (T) m() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
var x = T.m // ERROR "initialization loop|depends upon itself"
|
||||
var x = T.m // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -15,4 +15,4 @@ func (T) m() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
var x = T.m(0) // ERROR "initialization loop|depends upon itself"
|
||||
var x = T.m(0) // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -15,4 +15,4 @@ func (T) m() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
var x = T(0).m // ERROR "initialization loop|depends upon itself"
|
||||
var x = T(0).m // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -15,4 +15,4 @@ func (T) m() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
var x = T(0).m() // ERROR "initialization loop|depends upon itself"
|
||||
var x = T(0).m() // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -17,4 +17,4 @@ func (T) m() int {
|
||||
|
||||
type E struct{ T }
|
||||
|
||||
var x = E.m // ERROR "initialization loop|depends upon itself"
|
||||
var x = E.m // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -17,4 +17,4 @@ func (T) m() int {
|
||||
|
||||
type E struct{ T }
|
||||
|
||||
var x = E.m(E{0}) // ERROR "initialization loop|depends upon itself"
|
||||
var x = E.m(E{0}) // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -17,4 +17,4 @@ func (T) m() int {
|
||||
|
||||
type E struct{ T }
|
||||
|
||||
var x = E{}.m // ERROR "initialization loop|depends upon itself"
|
||||
var x = E{}.m // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -17,4 +17,4 @@ func (T) m() int {
|
||||
|
||||
type E struct{ T }
|
||||
|
||||
var x = E{}.m() // ERROR "initialization loop|depends upon itself"
|
||||
var x = E{}.m() // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -17,5 +17,5 @@ func (T) m() int {
|
||||
|
||||
var (
|
||||
t T
|
||||
x = t.m // ERROR "initialization loop|depends upon itself"
|
||||
x = t.m // ERROR "initialization cycle|depends upon itself"
|
||||
)
|
||||
|
@ -17,5 +17,5 @@ func (T) m() int {
|
||||
|
||||
var (
|
||||
t T
|
||||
x = t.m() // ERROR "initialization loop|depends upon itself"
|
||||
x = t.m() // ERROR "initialization cycle|depends upon itself"
|
||||
)
|
||||
|
@ -21,5 +21,5 @@ func f() T {
|
||||
|
||||
var (
|
||||
t T
|
||||
x = f().m // ERROR "initialization loop|depends upon itself"
|
||||
x = f().m // ERROR "initialization cycle|depends upon itself"
|
||||
)
|
||||
|
@ -21,5 +21,5 @@ func f() T {
|
||||
|
||||
var (
|
||||
t T
|
||||
x = f().m() // ERROR "initialization loop|depends upon itself"
|
||||
x = f().m() // ERROR "initialization cycle|depends upon itself"
|
||||
)
|
||||
|
@ -19,5 +19,5 @@ type E struct{ T }
|
||||
|
||||
var (
|
||||
e E
|
||||
x = e.m // ERROR "initialization loop|depends upon itself"
|
||||
x = e.m // ERROR "initialization cycle|depends upon itself"
|
||||
)
|
||||
|
@ -19,5 +19,5 @@ type E struct{ T }
|
||||
|
||||
var (
|
||||
e E
|
||||
x = e.m() // ERROR "initialization loop|depends upon itself"
|
||||
x = e.m() // ERROR "initialization cycle|depends upon itself"
|
||||
)
|
||||
|
@ -24,5 +24,5 @@ type E struct{ T }
|
||||
|
||||
var (
|
||||
e E
|
||||
x = g().m // ERROR "initialization loop|depends upon itself"
|
||||
x = g().m // ERROR "initialization cycle|depends upon itself"
|
||||
)
|
||||
|
@ -24,5 +24,5 @@ type E struct{ T }
|
||||
|
||||
var (
|
||||
e E
|
||||
x = g().m() // ERROR "initialization loop|depends upon itself"
|
||||
x = g().m() // ERROR "initialization cycle|depends upon itself"
|
||||
)
|
||||
|
@ -15,4 +15,4 @@ func (*T) pm() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
var x = (*T).pm // ERROR "initialization loop|depends upon itself"
|
||||
var x = (*T).pm // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -15,4 +15,4 @@ func (*T) pm() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
var x = (*T).pm(nil) // ERROR "initialization loop|depends upon itself"
|
||||
var x = (*T).pm(nil) // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -15,4 +15,4 @@ func (*T) pm() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
var x = (*T)(nil).pm // ERROR "initialization loop|depends upon itself"
|
||||
var x = (*T)(nil).pm // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -15,4 +15,4 @@ func (*T) pm() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
var x = (*T)(nil).pm() // ERROR "initialization loop|depends upon itself"
|
||||
var x = (*T)(nil).pm() // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -17,5 +17,5 @@ func (*T) pm() int {
|
||||
|
||||
var (
|
||||
p *T
|
||||
x = p.pm // ERROR "initialization loop|depends upon itself"
|
||||
x = p.pm // ERROR "initialization cycle|depends upon itself"
|
||||
)
|
||||
|
@ -17,5 +17,5 @@ func (*T) pm() int {
|
||||
|
||||
var (
|
||||
p *T
|
||||
x = p.pm() // ERROR "initialization loop|depends upon itself"
|
||||
x = p.pm() // ERROR "initialization cycle|depends upon itself"
|
||||
)
|
||||
|
@ -20,4 +20,4 @@ func pf() *T {
|
||||
return nil
|
||||
}
|
||||
|
||||
var x = pf().pm // ERROR "initialization loop|depends upon itself"
|
||||
var x = pf().pm // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -20,4 +20,4 @@ func pf() *T {
|
||||
return nil
|
||||
}
|
||||
|
||||
var x = pf().pm() // ERROR "initialization loop|depends upon itself"
|
||||
var x = pf().pm() // ERROR "initialization cycle|depends upon itself"
|
||||
|
@ -10,6 +10,6 @@ package main
|
||||
|
||||
import "unsafe"
|
||||
|
||||
var x struct { // GC_ERROR "initialization loop for x"
|
||||
var x struct { // GC_ERROR "initialization cycle for x"
|
||||
a [unsafe.Sizeof(x.a)]int // GCCGO_ERROR "array bound|typechecking loop|invalid expression"
|
||||
}
|
||||
|
@ -8,6 +8,6 @@
|
||||
|
||||
package main
|
||||
|
||||
var y struct { // GC_ERROR "initialization loop for y"
|
||||
var y struct { // GC_ERROR "initialization cycle for y"
|
||||
d [len(y.d)]int // GCCGO_ERROR "array bound|typechecking loop|invalid array"
|
||||
}
|
||||
|
@ -8,6 +8,6 @@
|
||||
|
||||
package main
|
||||
|
||||
var z struct { // GC_ERROR "initialization loop for z"
|
||||
var z struct { // GC_ERROR "initialization cycle for z"
|
||||
e [cap(z.e)]int // GCCGO_ERROR "array bound|typechecking loop|invalid array"
|
||||
}
|
||||
|
@ -10,6 +10,6 @@ package main
|
||||
|
||||
import "unsafe"
|
||||
|
||||
var x struct { // GC_ERROR "initialization loop for x"
|
||||
var x struct { // GC_ERROR "initialization cycle for x"
|
||||
b [unsafe.Offsetof(x.b)]int // GCCGO_ERROR "array bound|typechecking loop|invalid array"
|
||||
}
|
||||
|
@ -10,6 +10,6 @@ package main
|
||||
|
||||
import "unsafe"
|
||||
|
||||
var x struct { // GC_ERROR "initialization loop for x"
|
||||
var x struct { // GC_ERROR "initialization cycle for x"
|
||||
c [unsafe.Alignof(x.c)]int // GCCGO_ERROR "array bound|typechecking loop|invalid array"
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ package p
|
||||
// and runs in a fraction of a second without it.
|
||||
// 10 seconds (-t 10 above) should be plenty if the code is working.
|
||||
|
||||
var x = f() + z() // ERROR "initialization loop"
|
||||
var x = f() + z() // ERROR "initialization cycle"
|
||||
|
||||
func f() int { return a1() + a2() + a3() + a4() + a5() + a6() + a7() }
|
||||
func z() int { return x }
|
||||
|
@ -9,6 +9,6 @@
|
||||
|
||||
package main
|
||||
|
||||
const A = 1 + B // ERROR "constant definition loop\n.*A uses B\n.*B uses C\n.*C uses A|initialization loop"
|
||||
const B = C - 1 // ERROR "constant definition loop\n.*B uses C\n.*C uses B|initialization loop"
|
||||
const A = 1 + B // ERROR "constant definition loop\n.*A uses B\n.*B uses C\n.*C uses A|initialization cycle"
|
||||
const B = C - 1 // ERROR "constant definition loop\n.*B uses C\n.*C uses B|initialization cycle"
|
||||
const C = A + B + 1
|
||||
|
Loading…
Reference in New Issue
Block a user