1// +build ignore 2 3package main 4 5import "reflect" 6 7// 8// This test is very sensitive to line-number perturbations! 9 10// Test of channels with reflection. 11 12var a, b int 13 14func chanreflect1() { 15 ch := make(chan *int, 0) 16 crv := reflect.ValueOf(ch) 17 crv.Send(reflect.ValueOf(&a)) 18 print(crv.Interface()) // @types chan *int 19 print(crv.Interface().(chan *int)) // @pointsto makechan@testdata/chanreflect.go:15:12 20 print(<-ch) // @pointsto main.a 21} 22 23func chanreflect2() { 24 ch := make(chan *int, 0) 25 ch <- &b 26 crv := reflect.ValueOf(ch) 27 r, _ := crv.Recv() 28 print(r.Interface()) // @types *int 29 print(r.Interface().(*int)) // @pointsto main.b 30} 31 32func main() { 33 chanreflect1() 34 chanreflect2() 35} 36