golang.org/x/tools@v0.21.1-0.20240520172518-788d39e776b1/go/callgraph/vta/testdata/src/generic_channels.go (about)

     1  // Copyright 2021 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // go:build ignore
     6  
     7  package testdata
     8  
     9  type I1 interface{}
    10  type I2 interface{}
    11  type I3 interface{}
    12  
    13  func Foo[C interface{ ~chan I1 | ~chan<- I1 }](c C, j int) {
    14  	c <- j
    15  }
    16  
    17  func Bar[C interface{ ~chan I2 | ~<-chan I2 }](c C) {
    18  	x := <-c
    19  	print(x)
    20  }
    21  
    22  func Baz[C interface{ ~chan I3 | ~<-chan I3 }](c C) {
    23  	select {
    24  	case x := <-c:
    25  		print(x)
    26  	default:
    27  	}
    28  }
    29  
    30  // WANT:
    31  // Local(t0) -> Channel(chan testdata.I1)
    32  // Channel(chan testdata.I2) -> Local(t0)
    33  // Channel(chan testdata.I3) -> Local(t0[2])