aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/types2/builtins.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2021-07-02 16:54:14 -0700
committerRobert Griesemer <gri@golang.org>2021-07-07 23:42:19 +0000
commitd2bf94fb86b45609564919caa21c6b098b5197d3 (patch)
treed97dc4a4f0d53dd143e39cec5dde5281f6d7090d /src/cmd/compile/internal/types2/builtins.go
parent03ec8de24b6fc8a2abeb4013ef603f5cdef9f874 (diff)
downloadgo-d2bf94fb86b45609564919caa21c6b098b5197d3.tar.gz
go-d2bf94fb86b45609564919caa21c6b098b5197d3.zip
[dev.typeparams] cmd/compile/internal/types2: replace optype() with under() in various cases (cleanup)
This makes the behavior for type parameter operands explicit in those cases. Change-Id: I38438af67de4432f1a691dc4947e4576445f031b Reviewed-on: https://go-review.googlesource.com/c/go/+/332555 Trust: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
Diffstat (limited to 'src/cmd/compile/internal/types2/builtins.go')
-rw-r--r--src/cmd/compile/internal/types2/builtins.go8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/cmd/compile/internal/types2/builtins.go b/src/cmd/compile/internal/types2/builtins.go
index 7ba26509e8..83d1743ee2 100644
--- a/src/cmd/compile/internal/types2/builtins.go
+++ b/src/cmd/compile/internal/types2/builtins.go
@@ -332,13 +332,15 @@ func (check *Checker) builtin(x *operand, call *syntax.CallExpr, id builtinId) (
return
}
var src Type
- switch t := optype(y.typ).(type) {
+ switch t := under(y.typ).(type) {
case *Basic:
if isString(y.typ) {
src = universeByte
}
case *Slice:
src = t.elem
+ case *TypeParam:
+ check.error(x, "copy on generic operands not yet implemented")
}
if dst == nil || src == nil {
@@ -455,12 +457,12 @@ func (check *Checker) builtin(x *operand, call *syntax.CallExpr, id builtinId) (
var valid func(t Type) bool
valid = func(t Type) bool {
var m int
- switch t := optype(t).(type) {
+ switch t := under(t).(type) {
case *Slice:
m = 2
case *Map, *Chan:
m = 1
- case *Union:
+ case *TypeParam:
return t.underIs(valid)
default:
return false