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