From: Robert Griesemer Date: Wed, 14 Apr 2021 20:10:34 +0000 (-0700) Subject: cmd/compile/internal/syntax: fix error message for ... without type X-Git-Tag: go1.17beta1~621 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a63ff398d5;p=gostls13.git 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 Run-TryBot: Robert Griesemer TryBot-Result: Go Bot Reviewed-by: Robert Findley --- diff --git a/src/cmd/compile/internal/syntax/parser.go b/src/cmd/compile/internal/syntax/parser.go index 026297432d..80250212dd 100644 --- a/src/cmd/compile/internal/syntax/parser.go +++ b/src/cmd/compile/internal/syntax/parser.go @@ -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 diff --git a/src/cmd/compile/internal/syntax/testdata/issue43674.src b/src/cmd/compile/internal/syntax/testdata/issue43674.src new file mode 100644 index 0000000000..51c692ae69 --- /dev/null +++ b/src/cmd/compile/internal/syntax/testdata/issue43674.src @@ -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 */ ) diff --git a/test/fixedbugs/bug228.go b/test/fixedbugs/bug228.go index f7ac670689..50e895917f 100644 --- a/test/fixedbugs/bug228.go +++ b/test/fixedbugs/bug228.go @@ -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 "[.][.][.]"