cmd/compile/internal/syntax: fix error message for ... without type

Only complain about missing type; leave it to type-checking
to decide whether "..." is permitted in the first place.

Fixes #43674.

Change-Id: Icbc8f084e364fe3ac16076406a134354219c08d0
Reviewed-on: https://go-review.googlesource.com/c/go/+/310209
Trust: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
Robert Griesemer 2021-04-14 13:10:34 -07:00
parent ddd8d7c0a6
commit a63ff398d5
3 changed files with 15 additions and 2 deletions

View File

@ -1836,7 +1836,7 @@ func (p *parser) paramDeclOrNil(name *Name) *Field {
t.Elem = p.typeOrNil()
if t.Elem == nil {
t.Elem = p.badExpr()
p.syntaxError("final argument in variadic function missing type")
p.syntaxError("... is missing type")
}
f.Type = t
return f

View File

@ -0,0 +1,13 @@
// Copyright 2021 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 _(... /* ERROR [.][.][.] is missing type */ )
func _(... /* ERROR [.][.][.] is missing type */ , int)
func _(a, b ... /* ERROR [.][.][.] is missing type */ )
func _(a, b ... /* ERROR [.][.][.] is missing type */ , x int)
func _()(... /* ERROR [.][.][.] is missing type */ )

View File

@ -8,7 +8,7 @@ package main
func f(x int, y ...int) // ok
func g(x int, y float32) (...) // ERROR "[.][.][.]" "final argument"
func g(x int, y float32) (...) // ERROR "[.][.][.]"
func h(x, y ...int) // ERROR "[.][.][.]"