]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.typeparams] cmd/compile/internal/types2: report invalid ... in conversions
authorRobert Griesemer <gri@golang.org>
Thu, 10 Dec 2020 19:30:18 +0000 (11:30 -0800)
committerRobert Griesemer <gri@golang.org>
Mon, 14 Dec 2020 21:29:06 +0000 (21:29 +0000)
This fixes the bug below for types2.

Updates #43124.

Change-Id: Ic1962d41f321d8a08992d8529625bc133e526b0c
Reviewed-on: https://go-review.googlesource.com/c/go/+/278012
Trust: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
TryBot-Result: Go Bot <gobot@golang.org>

src/cmd/compile/internal/types2/call.go
src/cmd/compile/internal/types2/fixedbugs/issue43124.src [new file with mode: 0644]

index fe3c17fc6b84752767f43fc1e71f891187fbfcf4..5ecd54ab0b3e99084a235674505e35294ee6475f 100644 (file)
@@ -128,6 +128,10 @@ func (check *Checker) call(x *operand, call *syntax.CallExpr) exprKind {
                                                break
                                        }
                                }
+                               if call.HasDots {
+                                       check.errorf(call.ArgList[0], "invalid use of ... in type conversion to %s)", T)
+                                       break
+                               }
                                check.conversion(x, T)
                        }
                default:
diff --git a/src/cmd/compile/internal/types2/fixedbugs/issue43124.src b/src/cmd/compile/internal/types2/fixedbugs/issue43124.src
new file mode 100644 (file)
index 0000000..7e48c22
--- /dev/null
@@ -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 type conversion */ ...)
+
+// test case from issue
+
+type M []string
+
+var (
+       x = []string{"a", "b"}
+       _ = M(x /* ERROR invalid use of \.\.\. in type conversion */ ...)
+)