go/types, types2: improve error message for init without body

Change-Id: I8a684965e88e0e33a6ff33a16e08d136e3267f7e
Reviewed-on: https://go-review.googlesource.com/c/go/+/663636
TryBot-Bypass: Mark Freeman <mark@golang.org>
Auto-Submit: Mark Freeman <mark@golang.org>
Reviewed-by: Robert Griesemer <gri@google.com>
This commit is contained in:
Mark Freeman 2025-04-04 10:44:38 -07:00 committed by Gopher Robot
parent 2c929d6f4c
commit bc5aa2f7d3
6 changed files with 6 additions and 10 deletions

View File

@ -436,10 +436,8 @@ func (check *Checker) collectObjects() {
if name == "init" {
obj.parent = pkg.scope
check.recordDef(s.Name, obj)
// init functions must have a body
if s.Body == nil {
// TODO(gri) make this error message consistent with the others above
check.softErrorf(obj.pos, MissingInitBody, "missing function body")
check.softErrorf(obj.pos, MissingInitBody, "func init must have a body")
}
} else {
check.declare(pkg.scope, s.Name, obj, nopos)

View File

@ -192,7 +192,7 @@ func TestIssue20855(t *testing.T) {
testenv.MustHaveSource(t)
pkg, err := importer.ImportFrom("go/internal/srcimporter/testdata/issue20855", ".", 0)
if err == nil || !strings.Contains(err.Error(), "missing function body") {
if err == nil || !strings.Contains(err.Error(), "func init must have a body") {
t.Fatalf("got unexpected or no error: %v", err)
}
if pkg == nil {

View File

@ -4,4 +4,4 @@
package issue20855
func init() // "missing function body" is a soft error
func init() // "func init must have a body" is a soft error

View File

@ -425,10 +425,8 @@ func (check *Checker) collectObjects() {
// don't declare init functions in the package scope - they are invisible
obj.parent = pkg.scope
check.recordDef(d.decl.Name, obj)
// init functions must have a body
if d.decl.Body == nil {
// TODO(gri) make this error message consistent with the others above
check.softErrorf(obj, MissingInitBody, "missing function body")
check.softErrorf(obj, MissingInitBody, "func init must have a body")
}
} else {
check.declare(pkg.scope, d.decl.Name, obj, nopos)

View File

@ -43,7 +43,7 @@ type init /* ERROR "cannot declare init" */ struct{}
var _, init /* ERROR "cannot declare init" */ int
func init() {}
func init /* ERROR "missing function body" */ ()
func init /* ERROR "func init must have a body" */ ()
func _() { const init = 0 }
func _() { type init int }

View File

@ -6,4 +6,4 @@
package p
func init() // ERROR "missing function body|cannot declare init"
func init() // ERROR "func init must have a body|cannot declare init"