| // +build ignore |
| |
| package main |
| |
| import "reflect" |
| |
| // |
| // This test is very sensitive to line-number perturbations! |
| |
| // Test of channels with reflection. |
| |
| var a, b int |
| |
| func chanreflect1() { |
| ch := make(chan *int, 0) |
| crv := reflect.ValueOf(ch) |
| crv.Send(reflect.ValueOf(&a)) |
| print(crv.Interface()) // @types chan *int |
| print(crv.Interface().(chan *int)) // @pointsto makechan@testdata/chanreflect.go:15:12 |
| print(<-ch) // @pointsto main.a |
| } |
| |
| func chanreflect2() { |
| ch := make(chan *int, 0) |
| ch <- &b |
| crv := reflect.ValueOf(ch) |
| r, _ := crv.Recv() |
| print(r.Interface()) // @types *int |
| print(r.Interface().(*int)) // @pointsto main.b |
| } |
| |
| func main() { |
| chanreflect1() |
| chanreflect2() |
| } |