go/types: report invalid ... in conversions

This is a port of CL 277072 from the dev.typeparams branch.

Fixes #43124

Change-Id: I1424c396dc1ea984ec85b8f31a4d43353bf7e4fc
Reviewed-on: https://go-review.googlesource.com/c/go/+/277352
Run-TryBot: Robert Findley <rfindley@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Robert Findley <rfindley@google.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
Rob Findley 2020-12-11 16:24:26 -05:00 committed by Robert Findley
parent 278b9a8a4a
commit 6e3cc5c56f
2 changed files with 20 additions and 0 deletions

View file

@ -33,6 +33,10 @@ func (check *Checker) call(x *operand, e *ast.CallExpr) exprKind {
case 1:
check.expr(x, e.Args[0])
if x.mode != invalid {
if e.Ellipsis.IsValid() {
check.errorf(e.Args[0], _BadDotDotDotSyntax, "invalid use of ... in conversion to %s", T)
break
}
check.conversion(x, T)
}
default:

View file

@ -0,0 +1,16 @@
// Copyright 2020 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
var _ = int(0 /* ERROR invalid use of \.\.\. in conversion to int */ ...)
// test case from issue
type M []string
var (
x = []string{"a", "b"}
_ = M(x /* ERROR invalid use of \.\.\. in conversion to M */ ...)
)