blob: 390f07a439251a5e59f158ad2828075bcb68d9fa [file] [log] [blame]
// 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.
// go:build ignore
package testdata
type I1 interface{}
type I2 interface{}
type I3 interface{}
func Foo[C interface{ ~chan I1 | ~chan<- I1 }](c C, j int) {
c <- j
}
func Bar[C interface{ ~chan I2 | ~<-chan I2 }](c C) {
x := <-c
print(x)
}
func Baz[C interface{ ~chan I3 | ~<-chan I3 }](c C) {
select {
case x := <-c:
print(x)
default:
}
}
// WANT:
// Local(t0) -> Channel(chan testdata.I1)
// Channel(chan testdata.I2) -> Local(t0)
// Channel(chan testdata.I3) -> Local(t0[2])