]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal/syntax: correct an error string
authorRobert Griesemer <gri@golang.org>
Wed, 20 Apr 2022 19:05:30 +0000 (12:05 -0700)
committerRobert Griesemer <gri@golang.org>
Wed, 20 Apr 2022 20:49:36 +0000 (20:49 +0000)
When we have an error in a function type used in an expression
we don't know until we see an opening { whether we have a function
literal or a function type. Use "function type" as context because
that's always correct in the specific error message.

Change-Id: I9aad8fcddf31ae53daa53cebd2c2001f08eabde0
Reviewed-on: https://go-review.googlesource.com/c/go/+/401316
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Robert Griesemer <gri@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
src/cmd/compile/internal/syntax/parser.go
src/cmd/compile/internal/syntax/testdata/issue48382.go

index 9de6d4f45ebd80acc9d8f2c78530d9423409331e..fe1c76e81b8b9e00e7188d0a6147716c19ff23d2 100644 (file)
@@ -991,7 +991,7 @@ func (p *parser) operand(keep_parens bool) Expr {
        case _Func:
                pos := p.pos()
                p.next()
-               _, ftyp := p.funcType("function literal")
+               _, ftyp := p.funcType("function type")
                if p.tok == _Lbrace {
                        p.xnest++
 
index c00fee6f82689c2680c0e3a24ebea038a0b23569..7c024a051f6cf6fccbfb48023fba123f4391cd61 100644 (file)
@@ -8,7 +8,8 @@ type _ func /* ERROR function type must have no type parameters */ [ /* ERROR em
 type _ func /* ERROR function type must have no type parameters */ [ x /* ERROR missing type constraint */ ]()
 type _ func /* ERROR function type must have no type parameters */ [P any]()
 
-var _ = func /* ERROR function literal must have no type parameters */ [P any]() {}
+var _ = (func /* ERROR function type must have no type parameters */ [P any]())(nil)
+var _ = func /* ERROR function type must have no type parameters */ [P any]() {}
 
 type _ interface{
         m /* ERROR interface method must have no type parameters */ [P any]()