| // +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() | |
| } |