GoPLS Viewer

Home|gopls/go/pointer/testdata/chanreflect1.go
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 ab int
13
14func chanreflect1() {
15    ch := make(chan *int0)
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 *int0)
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
MembersX
chanreflect1.BlockStmt.ch
chanreflect1.BlockStmt.crv
chanreflect2.BlockStmt.ch
chanreflect2.BlockStmt.crv
chanreflect2.BlockStmt.r
chanreflect2.BlockStmt._
Members
X