diff options
| author | Robert Griesemer <gri@golang.org> | 2021-04-14 13:10:34 -0700 |
|---|---|---|
| committer | Robert Griesemer <gri@golang.org> | 2021-04-15 19:41:38 +0000 |
| commit | a63ff398d541a1b3a3658e38693adebf370aadbb (patch) | |
| tree | 681e79526f9a34b3e59b71c187b378991b869707 /src/cmd/compile/internal/syntax | |
| parent | ddd8d7c0a6859114f1f9bfbb3c56fb63f870badc (diff) | |
| download | go-a63ff398d541a1b3a3658e38693adebf370aadbb.tar.xz | |
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>
Diffstat (limited to 'src/cmd/compile/internal/syntax')
| -rw-r--r-- | src/cmd/compile/internal/syntax/parser.go | 2 | ||||
| -rw-r--r-- | src/cmd/compile/internal/syntax/testdata/issue43674.src | 13 |
2 files changed, 14 insertions, 1 deletions
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 */ ) |
