.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.1.1-0.20210319172145-bda8f5cee399 / go / pointer / testdata / chanreflect1.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.1-0.20210319172145-bda8f5cee399/go/pointer/testdata/chanreflect1.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.1-0.20210319172145-bda8f5cee399/go/pointer/testdata/chanreflect1.go
new file mode 100644 (file)
index 0000000..c5e2587
--- /dev/null
@@ -0,0 +1,35 @@
+// +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()
+}