diff options
Diffstat (limited to 'test/typeparam/append.go')
-rw-r--r-- | test/typeparam/append.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/typeparam/append.go b/test/typeparam/append.go new file mode 100644 index 0000000..6168262 --- /dev/null +++ b/test/typeparam/append.go @@ -0,0 +1,31 @@ +// run + +// Copyright 2021 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 main + +type Recv <-chan int + +type sliceOf[E any] interface { + ~[]E +} + +func _Append[S sliceOf[T], T any](s S, t ...T) S { + return append(s, t...) +} + +func main() { + recv := make(Recv) + a := _Append([]Recv{recv}, recv) + if len(a) != 2 || a[0] != recv || a[1] != recv { + panic(a) + } + + recv2 := make(chan<- int) + a2 := _Append([]chan<- int{recv2}, recv2) + if len(a2) != 2 || a2[0] != recv2 || a2[1] != recv2 { + panic(a) + } +} |