mirror of https://github.com/golang/go.git
cmd/compile/internal/syntax: set up dummy name and type if func name is missing
We do the same elsewhere (e.g. in parser.name when a name is missing). This ensures functions have a (dummy) name and a non-nil type. Avoids a crash in the type-checker (verified manually). A test was added here (rather than the type checker) because type- checker tests are shared between types2 and go/types and error recovery in this case is different. Fixes #63835. Change-Id: I1460fc88d23d80b8d8c181c774d6b0a56ca06317 Reviewed-on: https://go-review.googlesource.com/c/go/+/538059 Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Bypass: Robert Griesemer <gri@google.com> Reviewed-by: Robert Griesemer <gri@google.com> Run-TryBot: Robert Griesemer <gri@google.com> Auto-Submit: Robert Griesemer <gri@google.com>
This commit is contained in:
parent
25a59decd5
commit
b7a66be69c
|
|
@ -798,6 +798,9 @@ func (p *parser) funcDeclOrNil() *FuncDecl {
|
|||
f.Name = p.name()
|
||||
f.TParamList, f.Type = p.funcType(context)
|
||||
} else {
|
||||
f.Name = NewName(p.pos(), "_")
|
||||
f.Type = new(FuncType)
|
||||
f.Type.pos = p.pos()
|
||||
msg := "expected name or ("
|
||||
if context != "" {
|
||||
msg = "expected name"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
// Copyright 2023 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package p
|
||||
|
||||
func (x string) /* ERROR syntax error: unexpected \[, expected name */ []byte {
|
||||
return []byte(x)
|
||||
}
|
||||
Loading…
Reference in New Issue