aboutsummaryrefslogtreecommitdiff
path: root/src/go
diff options
context:
space:
mode:
authorRob Findley <rfindley@google.com>2020-12-11 16:24:26 -0500
committerRobert Findley <rfindley@google.com>2020-12-14 22:05:52 +0000
commit6e3cc5c56fa532df1f7690ee4955a1751b1ccbce (patch)
tree82dd8d96392b549db80f9479511da2fb6604ba35 /src/go
parent278b9a8a4a905ca91feb145b949303bd91a2a154 (diff)
downloadgo-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.go4
-rw-r--r--src/go/types/fixedbugs/issue43124.src16
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 */ ...)
+)