diff options
author | Rob Findley <rfindley@google.com> | 2020-12-11 16:24:26 -0500 |
---|---|---|
committer | Robert Findley <rfindley@google.com> | 2020-12-14 22:05:52 +0000 |
commit | 6e3cc5c56fa532df1f7690ee4955a1751b1ccbce (patch) | |
tree | 82dd8d96392b549db80f9479511da2fb6604ba35 /src/go | |
parent | 278b9a8a4a905ca91feb145b949303bd91a2a154 (diff) | |
download | go-6e3cc5c56fa532df1f7690ee4955a1751b1ccbce.tar.gz go-6e3cc5c56fa532df1f7690ee4955a1751b1ccbce.zip |
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>
Diffstat (limited to 'src/go')
-rw-r--r-- | src/go/types/call.go | 4 | ||||
-rw-r--r-- | src/go/types/fixedbugs/issue43124.src | 16 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/go/types/call.go b/src/go/types/call.go index 992598d08c..6765b17bf3 100644 --- a/src/go/types/call.go +++ b/src/go/types/call.go @@ -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: diff --git a/src/go/types/fixedbugs/issue43124.src b/src/go/types/fixedbugs/issue43124.src new file mode 100644 index 0000000000..f429f74a74 --- /dev/null +++ b/src/go/types/fixedbugs/issue43124.src @@ -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 */ ...) +) |